JSのCognito IDプールを使用して、サブスクリプションに接続し、公開し、反応するサンプルです。
// Configure Cognito identity pool
AWS.config.region = 'us-east-1';
var credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1:your identity pool guid',
});
// Getting AWS creds from Cognito is async, so we need to drive the rest of the mqtt client initialization in a callback
credentials.get(function(err) {
if(err) {
console.log(err);
return;
}
var requestUrl = SigV4Utils.getSignedUrl('wss', 'data.iot.us-east-1.amazonaws.com', '/mqtt',
'iotdevicegateway', 'us-east-1',
credentials.accessKeyId, credentials.secretAccessKey, credentials.sessionToken);
initClient(requestUrl);
});
function init() {
// do setup stuff
}
// Connect the client, subscribe to the drawing topic, and publish a "hey I connected" message
function initClient(requestUrl) {
var clientId = String(Math.random()).replace('.', '');
var client = new Paho.MQTT.Client(requestUrl, clientId);
var connectOptions = {
onSuccess: function() {
console.log('connected');
// subscribe to the drawing
client.subscribe("your/mqtt/topic");
// publish a lifecycle event
message = new Paho.MQTT.Message('{"id":"' + credentials.identityId + '"}');
message.destinationName = 'your/mqtt/topic';
console.log(message);
client.send(message);
},
useSSL: true,
timeout: 3,
mqttVersion: 4,
onFailure: function() {
console.error('connect failed');
}
};
client.connect(connectOptions);
client.onMessageArrived = function (message) {
try {
console.log("msg arrived: " + message.payloadString);
} catch (e) {
console.log("error! " + e);
}
};
}
Documentation for the credentials.get
call, here
にも/公開を購読するためのあなたのIAM役割を承認することを忘れないでください。ここではサンプルです:here's a tutorial AWS IOTにサーバレスとWebSocketをを使用してReactJSフロントエンドにリアルタイムの更新を取得する方法を、簡単なチャットアプリを経由して示しています。それ以外の場合は誰に
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "iot:Receive",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "iot:Subscribe",
"Resource": [
"arn:aws:iot:us-east-1::your/mqtt/topic"
]
},
{
"Effect": "Allow",
"Action": "iot:Publish",
"Resource": [
"arn:aws:iot:us-east-1::your/mqtt/topic"
]
}
]
}
sigv4関数は参考までに[ここ](http://draw.kyleroche.com/sigv4utils.js)です。 –
次のエラーが発生しています: aws-sdk-2.7.1.js:6834キャッチエラー:瞬間が定義されていません(...)callListeners @ aws-sdk-2.7.1.js:6834emit @ aws-sdk-2.7.1 .js:6810emit @ aws-sdk-2.7.1.js:4054transition @ aws-sdk-2.7.1.js:3831runTo @ aws-sdk -..... 私もaws sdkを更新しましたが、それでも同じエラーが出る場合は、あなたが私を助けてくれ、可能であれば、あなたが使っているaws-sdk.jsファイルを共有してください。 –
あなたは "iotdevicegateway"を使っていますが、 "iotdevicegateway"として何をパラメータとして渡していますか? resourceIdまたはDeviceIdを渡す必要がありますか? –