SORACOMの認証情報(AWSアクセスキー利用)をAPIで登録してみた
SORACOMには、開発者向けにAPIが提供されています。
本記事では、このAPIを使って、「認証情報(AWSアクセスキー)」を登録してみました。
おすすめの方
- SORACOM APIを使いたい方
AWSアクセスキーの準備
事前に用意しておきます。たとえば、SORACOM Funnelを使う場合は、次の内容が参考になると思います。
SORACOM APIを使う準備
- SAMユーザの作成
- SAMユーザのアクセス権限を付与
- SAMユーザの「認証キーID&認証キーシークレット」を取得
上記については、次のブログを参考に行います。
なお、今回のアクセス権限は下記となります。
{ "statements": [ { "api": [ "Credential:createCredential" ], "effect": "allow" } ] }
SORACOM APIでAWS認証情報を作成する
利用するAPI
次のAPIを利用します。
- POST /credentials/{credentials_id}
credentials_id
は、自分で任意のIDを指定できます。
また、AWS認証情報以外を利用したい場合は、APIリファレンスの下記を変更すれば、Request Bodyのサンプルが見れます。
Pythonスクリプト
本記事は、次のスクリプトを使います。内容的には、SORACOM APIを使うためのAPIキーを取得して、認証情報作成のAPIにアクセスしています。
- APIトークンの有効期限はデフォルト設定です。
- レートリミットの考慮をしていません。
import json import requests from typing import Tuple SORACOM_ENDPOINT = 'https://api.soracom.io/v1' SORACOM_KEY_ID = 'keyId-aaa' SORACOM_SECRET = 'secret-bbb' AWS_ACCESS_KEY_ID = 'xxx' AWS_SECRET_ACCESS_KEY = 'yyy' def main(): api_key, token = get_token() create_credential(api_key, token) def get_token() -> Tuple[str, str]: headers = {'Content-Type': 'application/json'} data = { 'authKeyId': SORACOM_KEY_ID, 'authKey': SORACOM_SECRET, } resp = requests.post(f'{SORACOM_ENDPOINT}/auth', headers=headers, data=json.dumps(data)) d = resp.json() return d['apiKey'], d['token'] def create_credential(api_key: str, token: str) -> None: headers = { 'Content-Type': 'application/json', 'X-Soracom-API-Key': api_key, 'X-Soracom-Token': token, } data = { 'type': 'aws-credentials', 'credentials': { 'accessKeyId': AWS_ACCESS_KEY_ID, 'secretAccessKey': AWS_SECRET_ACCESS_KEY, } } credential_id = 'foobar-20220722' resp = requests.post( f'{SORACOM_ENDPOINT}/credentials/{credential_id}', headers=headers, data=json.dumps(data) ) print(resp) if __name__ == '__main__': main()
スクリプトを実行する
python app.py
認証情報が作成されていることを確認する
SORACOMのWebコンソールにアクセスして、認証情報が作成されていることを確認します。
バッチリですね。
さいごに
SORACOM APIで認証情報(AWSアクセスキー)を作成できました。 これによって、AWSアクセスキーのローテーション自動化ができそうです。