IoT coreを使用するのに、クライアントからカスタムエンドポイントを取得する必要があるので、取得できるようになるまでの手順を覚書しておく。
必要なもののインストール
pythonへboto3と、AWSクライアント
boto3
pip3 install boto3
AWSクライアント
キーセットの取得
まずはアクセスキーとシークレットーキーが必要
アカウントの IAM → アクセス管理 → ユーザー → アクセスキー と進む。
アクセスキーを作成してシークレットキーを取得する(一度しか取得できないので紛失に注意する)。
AWSクライアントへのキーセットの登録
> aws configure --profile <プロファイル名(自由な名前でOK)>
AWS Access Key ID [None]: <取得したアクセスキー>
AWS Secret Access Key [None]: <取得したシークレットキー>
Default region name [None]: <デフォルトで使用したいリージョン、東京ならば「ap-northeast-1」>
Default output format [None]: json
プロファイルを作成したらプロファイルをデフォルト設定する
> set AWS_DEFAULT_PROFILE= <先ほど作成したプロファイル名>
ちゃんとキーセットが設定されているか確認する。
> aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************3LHQ shared-credentials-file
secret_key ****************vexf shared-credentials-file
region us-east-2 config-file ~/.aws/config
以下のファイルに、それっぽいのがあるか確認できる。
> cat ~/.aws/credentials
IoT coreのエンドポイントを確認
クライアントからエンドポイントの取得
pythonから取得する。
> python
Python 3.8.2 (default, Apr 27 2020, 13:03:04)
[Clang 10.0.0 (clang-1000.10.44.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import boto3
>>> client = boto3.client('iot', region_name='ap-northeast-1')
>>> endpoint_response = client.describe_endpoint(endpointType='iot:Data-ATS')
>>> print(endpoint_response)
{'ResponseMetadata': {'RequestId': '**************', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Sat, 13 Feb 2021 03:42:30 GMT', 'content-type': 'application/json', 'content-length': '74', 'connection': 'keep-alive', 'x-amzn-requestid': '****************', 'access-control-allow-origin': '*', 'x-amz-apigw-id': '********', 'x-amzn-trace-id': 'Root=****************'}, 'RetryAttempts': 0}, 'endpointAddress': '<ここが実際に取得したいエンドポイントになる>'}
整形
{
"ResponseMetadata": {
"RequestId": "**************",
"HTTPStatusCode": 200,
"HTTPHeaders": {
"date": "Sat, 13 Feb 2021 03:42:30 GMT",
"content-type": "application/json",
"content-length": "74",
"connection": "keep-alive",
"x-amzn-requestid": "****************",
"access-control-allow-origin": "*",
"x-amz-apigw-id": "********",
"x-amzn-trace-id": "Root=****************"
},
"RetryAttempts": 0
},
"endpointAddress": "<ここが実際に取得したいエンドポイントになる>"
}
画面でみたエンドポイントと同じであるか確認する。
boto3.client
の部分は、キーセット直接指定でも問題ない。
>>> client = boto3.client('iot', region_name='ap-northeast-1', aws_access_key_id='***', aws_secret_access_key='***')