はじめに
当社で提供しておりますAWS運用自動化ツールのCloud Automatorはハンズオンセミナーを定期的に開催をしており、おかげさまで毎回好評を頂いております。このハンズオンにおいては、
- AWSアカウント
- VPC
- EC2インスタンス
- IAM
- Cloud Automatorアカウント
を参加者にご利用頂きますため、事前に参加者数分の環境を準備する必要があります。 AWSアカウント内のリソースの構築については、CloudFormationのスタックセットを自動化しており、以下の記事でその取り組みを紹介しました。 CloudFormation スタックセットで複数のAWS環境構築を一気に行う
構築した環境を当日参加者に利用頂くため、その環境を操作するIAMのクレデンシャル情報等を取得頂く必要があります。これらを当日スムーズに取得頂くため、当日参加者にダウンロード頂くようにしています。 ダウンロード頂く資材をBoxに期限付きパスワードでアップロードし、そのURLをBitlyで短縮し、参加者にそのURLを配布しています。環境準備作業全体の流れのイメージを以下図に示します。
今回、以下図の赤枠部分の自動化を試みましたので、その取り組みを簡単に紹介します。 ※本自動化の取り組みは当社インターンシップの活動の成果の一部をまとめたものになります。
自動化の試み
クレデンシャル情報の取得
複数のAWSアカウントのIAMユーザーのクレデンシャル情報を取得する必要があります。クレデンシャル情報を取得するための認証情報をAWSアカウント数分、手元に保存しておくのはセキュリティ上の懸念があるため、STSのAssumeRoleを用いて各AWSアカウントのIAMユーザーの認証情報を生成/取得します。
Python(Boto 3)では以下のように書けます。
response = sts_client.assume_role(
RoleArn=[role_arn],
RoleSessionName='role_session'
)
session = Session(
aws_access_key_id=response['Credentials']['AccessKeyId'],
aws_secret_access_key=response['Credentials']['SecretAccessKey'],
aws_session_token=response['Credentials']['SessionToken']
)
iam = session.resource('iam')
user = iam.User('HandsOnUser')
# キーペアの作成と取得
access_key_pair = user.create_access_key_pair()
access_key_id = access_key_pair.access_key_id
secret_access_key = access_key_pair.secret
※先日、認証情報のIAMロール対応をリリース致しましたため、本工程は今後修正予定です
Boxへのアップロード
取得したクレデンシャル情報を含む資材のファイルをBoxにアップロードし、期限付きパスワードを設定します。 こちらもプログラム(Python)で自動化します。BoxのPython SDKを用いると以下のように書けます。
created_folder = box_client.folder([対象フォルダID]).create_subfolder([作成するフォルダ名])
uploaded_file = client.folder(created_folder ['id']).upload([アップロードするファイル名])
shared_link_url = uploaded_file.get_shared_link(access="open", password=[パスワード], unshared_at=[期限日付]])
BitlyでURL短縮
最後にBitlyでBoxにアップロードしたファイルの公開URLを短縮化します。 BoxにもカスタムURLの機能が提供されているのですが、API経由での実行はサポートされていなかったため、Bitlyを用います。
こちらは以下のように書けます。
bitly_url = 'https://api-ssl.bitly.com/v3/shorten'
query = {
'access_token': [Bitlyのトークン],
'longurl': [短縮するURL]
}
short_url = requests.get(bitly_url, params=query).json()['data']['url']
おわりに
今回、Cloud Automatorハンズオンセミナーの環境準備の自動化の取り組みをご紹介しました。 今後もハンズオンセミナーの開催を予定しておりますので、是非チェックしてみてください!