[AWS] 子のAWSアカウントをAWS CLIで作成する

AWS CLI で指定するパラメータになります。
【 EMAIL 】
=> 子のAWSアカウントの管理メールアドレスを指定します。
 過去にAWSアカウントの管理アドレスとしている利用している場合は利用できません
【 ACCOUNT_NAME 】
=> 子のAWSに名前を付けます
【 ROLE_NAME 】
=> 子のAWSにアクセスするためにRoleを作成できます
【 BILLING_ACCESS 】
=> 請求情報へのアクセス(ALLOW or DENY)
【 PARENT_PROFILE 】
=> 親となるAWS Profile名。個別で管理していなければ default にします。

EMAIL="email@address"
ACCOUNT_NAME="child-account-name"
ROLE_NAME="first-access-role-by-organizations"
BILLING_ACCESS="ALLOW"
PARENT_PROFILE="default"

aws organizations create-account \
  --email ${EMAIL} \
  --account-name ${ACCOUNT_NAME} \
  --role-name ${ROLE_NAME} \
  --iam-user-access-to-billing ${BILLING_ACCESS} \
  --profile ${PARENT_PROFILE}

問題なければ、IN_PROGRESS の結果が返ってきます。おかしい場合は、エラーが表示されます。

{
    "CreateAccountStatus": {
        "Id": "car-0881XXXXXXXXXXXXXXXXXXXXXXXX79eb",
        "AccountName": "child-account-name",
        "State": "IN_PROGRESS",
        "RequestedTimestamp": "2023-03-07T15:11:41.328000+09:00"
    }
}

状況はidを指定して確認できます。

aws organizations describe-create-account-status \
--create-account-request-id car-0881XXXXXXXXXXXXXXXXXXXXXXXX79eb \
--profile ${PARENT_PROFILE}

完了すると State が SUCCEEDED となります。

{
    "CreateAccountStatus": {
        "Id": "car-088XXXXXXXXXXXXXXXXXXXXXXXX79eb",
        "AccountName": "child-account-name",
        "State": "SUCCEEDED",
        "RequestedTimestamp": "2023-03-07T15:11:41.398000+09:00",
        "CompletedTimestamp": "2023-03-07T15:11:44.267000+09:00",
        "AccountId": "54XXXXXXXX43"
    }
}

子AWSアカウントへのアクセス方法(コンソール)

親のAWSアカウントにログインした状態で、下記のような roleName と account を指定したURLに直接アクセスすると SwitchRole できます。
https://signin.aws.amazon.com/switchrole?roleName=first-access-role-by-organizations&account=54XXXXXXXX43

以下は、画面から行う方法になります。
親のAWSアカウントにログインし、右上のユーザ名をクリックします。
左下に表示されるロールの切り替えをクリックします。

アカウントには、結果に出てきた AccountId(54XXXXXXXX43)を入力します。
ロールには、最初に指定したRole名(first-access-role-by-organizations)を入力します。
表示名には、あとで SwtichRole するときに分かりやすい名前を入れます。
ロールの切り替えをクリックすると、子のAWSアカウントにログインできます。

子AWSアカウントへのアクセス方法(AWS CLI)

.aws/config に下記のようにprofileを追加します。

[profile child-account-name]
role_arn = arn:aws:iam::54XXXXXXXX43:role/first-access-role-by-organizations
source_profile = default

子の Profile で利用できる事を確認します。assume-role で動作していればOKです。

$ aws configure list --profile child-account-name
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile       child-account-name           manual    --profile
access_key     ****************XXXX      assume-role
secret_key     ****************XXXX      assume-role
    region                <not set>             None    None

最初の権限について

SwitchRole 用の権限には AdministratorAccess が当てられていますので、必要に応じて削除を行ってください。

AWSAWS,AWS IAM

Posted by kidatti