Cloudcraft API による AWS アカウントの追加

Cloudcraft は現在、Web インターフェイスを使用して複数の AWS アカウントを一度に追加する方法を提供していませんが、これは API を介して可能です。

AWS アカウントの追加とスキャン、および Cloudcraft の開発者 API の使用は、Pro 契約者のみが利用できます。詳しくは Cloudcraft の料金ページをご覧ください。

前提条件

始める前に、以下があることを確認してください。

AWS IAM ロールパラメーターの取得

まずは Cloudcraft の API の Get my AWS IAM Role パラメーターエンドポイントを使用し、レスポンスを保存することから始めます。

そのためには、コマンドラインを開き、以下の cURL コマンドを入力します。

curl \
  --url 'https://api.cloudcraft.co/aws/account/iamParameters' \
  --tlsv1.2 \
  --proto '=https' \
  --compressed \
  --silent \
  --header "Authorization: Bearer ${API_KEY}"

API_KEY を Cloudcraft の API キーに置き換えます。レスポンスは以下のようになります。

cloudcraft-response.json

{
  "accountId": "1234567890",
  "externalId": "ex53e827-a724-4a2a-9fec-b13761540785",
  "awsConsoleUrl": "https://console.aws.amazon.com/iam/home?#/roles..."
}

次のステップで IAM ロールを作成する際に必要になるので、accountId フィールドと externalId フィールドのコピーを取っておきます。

IAM ロールの作成

次に、AWS CLI で create-role コマンドを使用して IAM ロールを作成します。

aws iam create-role \
  --role-name 'cloudcraft' \
  --description 'Programmatically created IAM role for use with Cloudcraft.' \
  --max-session-duration '3600' \
  --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::ACCOUNT_ID:root"},"Action":"sts:AssumeRole","Condition":{"StringEquals":{"sts:ExternalId":"EXTERNAL_ID"}}}]}' \
  --query 'Role.Arn' \
  --output 'text'

ACCOUNT_IDEXTERNAL_ID を前のステップで取得した値に置き換えます。

成功すると、ロールのアカウント ARN がレスポンスとして表示されます。この値は保存しておいてください。

しかし、このロールにはまだ権限が割り当てられていません。ReadOnlyAccess ロールを接続するには、AWS CLI で attach-role-policy コマンドを使用します。

aws iam attach-role-policy \
  --role-name 'cloudcraft' \
  --policy-arn 'arn:aws:iam::aws:policy/ReadOnlyAccess'

: 前のステップでロールに別の名前を付けた場合は、cloudcraft を使用した名前に必ず置き換えてください。

Cloudcraft への AWS アカウントの追加

最後に、IAM ロールを作成したら、AWS アカウントを Cloudcraft に追加できます。このためには、作成したロールの ARN を使って Cloudcraft の開発者 API を呼び出します。

curl \
  --url 'https://api.cloudcraft.co/aws/account' \
  --tlsv1.2 \
  --proto '=https' \
  --silent \
  --header 'Content-Type: application/json' \
  --header "Authorization: Bearer ${API_KEY}" \
  --data-raw '{"name":"AWS_ACCOUNT_NAME","roleArn":"ROLE_ARN","region":"us-east-1"}' \

AWS_ACCOUNT_NAME を Cloudcraft でアカウントに付けたい名前に、ROLE_ARN を前のステップで作成したロールの ARN に置き換えます。また、us-east-1 はアカウントをチェックするリージョンに、API_KEY は API キーに置き換えます。

アカウントの追加に成功したら、同じコマンドを使用して Cloudcraft に他のアカウントを追加できます。