ハンズオン(簡易版): Organizations基礎(アカウント招待)

6.3. Organizations組織への招待 (CloudShell)

手順の目的

Organizations組織へAWSアカウントを招待します。

設定値の指定

手順に必要な設定値を変数に格納をします。

1. 招待するAWSアカウントの識別子タイプ

招待するAWSアカウントの識別子のタイプを指定します。

変数の設定:

ORGANIZATIONS_HANDSHAKE_ACCOUNT_TYPE='ACCOUNT'

2. 招待するAWSアカウントの識別子

招待するAWSアカウントの識別子を指定します。

変数の設定:

DIR_TMP_ORGANIZATIONS_ACCOUNT_ID="${HOME}/tmp-handson-cli-organizations"

変数の設定:

FILE_TMP_ORGANIZATIONS_ACCOUNT_ID="${DIR_TMP_ORGANIZATIONS_ACCOUNT_ID}/handson-cli-organizations-organizations-account-id-child.txt" \
  && echo ${FILE_TMP_ORGANIZATIONS_ACCOUNT_ID}

結果(例):

${HOME}/tmp-handson-cli-organizations/handson-cli-organizations-organizations-account-id-child.txt

コマンド:

source ${FILE_TMP_ORGANIZATIONS_ACCOUNT_ID}

変数の設定:

ORGANIZATIONS_HANDSHAKE_ACCOUNT_ID="${ORGANIZATIONS_ACCOUNT_ID_CHILD}" \
  && echo ${ORGANIZATIONS_HANDSHAKE_ACCOUNT_ID}

結果(例):

XXXXXXXXXXXX

設定値の確認

各変数に正しい設定値が格納されていることを確認します。

変数の確認:

cat << END

  # 1. ORGANIZATIONS_HANDSHAKE_ACCOUNT_TYPE:"ACCOUNT"
       ORGANIZATIONS_HANDSHAKE_ACCOUNT_TYPE="${ORGANIZATIONS_HANDSHAKE_ACCOUNT_TYPE}"
  # 2. ORGANIZATIONS_HANDSHAKE_ACCOUNT_ID:"<招待するAWSアカウントの識別子>"
       ORGANIZATIONS_HANDSHAKE_ACCOUNT_ID="${ORGANIZATIONS_HANDSHAKE_ACCOUNT_ID}"

END

各変数について、上の行と下の行の値の内容もしくは形式が同じであることを確認します。 もし異なる場合は、それぞれの手順番号に戻って変数の設定を行います。

処理の実行

設定文字列を生成します。

変数の設定:

STRING_ORGANIZATIONS_ACCOUNT_TARGET="Id=${ORGANIZATIONS_HANDSHAKE_ACCOUNT_ID},Type=${ORGANIZATIONS_HANDSHAKE_ACCOUNT_TYPE}" \
  && echo "${STRING_ORGANIZATIONS_ACCOUNT_TARGET}"

結果(例):

Id=<招待するAWSアカウントの識別子>,Type=ACCOUNT

AWSアカウントをOrganizations組織に招待します。

変数の確認:

cat << END

  # STRING_ORGANIZATIONS_ACCOUNT_TARGET:"Id=<招待するAWSアカウントの識別子>,Type=ACCOUNT"
    STRING_ORGANIZATIONS_ACCOUNT_TARGET="${STRING_ORGANIZATIONS_ACCOUNT_TARGET}"

END

コマンド:

aws organizations invite-account-to-organization \
  --target ${STRING_ORGANIZATIONS_ACCOUNT_TARGET}

結果(例):

{
    "Handshake": {
        "Id": "h-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "Arn": "arn:aws:organizations::XXXXXXXXXXXX:handshake/o-xxxxxxxxxx/invite/h-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "Parties": [
            {
                "Id": "xxxxxxxxxx",
                "Type": "ORGANIZATION"
            },
            {
                "Id": "<招待するAWSアカウントの識別子>",
                "Type": "ACCOUNT"
            }
        ],
        "State": "OPEN",
        "RequestedTimestamp": "2023-11-30T01:23:45.678000+00:00",
        "ExpirationTimestamp": "2023-11-30T01:23:45.678000+00:00",
        "Action": "INVITE",
        "Resources": [
            {
                "Value": "o-xxxxxxxxxx",
                "Type": "ORGANIZATION",
                "Resources": [
                    {
                        "Value": "<マスターアカウントの登録メールアドレス>",
                        "Type": "MASTER_EMAIL"
                    },
                    {
                        "Value": "<マスターアカウントの登録名>",
                        "Type": "MASTER_NAME"
                    },
                    {
                        "Value": "ALL",
                        "Type": "ORGANIZATION_FEATURE_SET"
                    }
                ]
            },
            {
                "Value": "<招待するAWSアカウントの識別子>",
                "Type": "ACCOUNT"
            }
        ]
    }
}

完了確認

「AWSアカウント識別子"<招待するAWSアカウントの識別子>"に対するステータス"OPEN"のOrganizations組織への招待が存在する。」ことを確認します。

コマンド:

aws organizations list-handshakes-for-organization \
  --query "Handshakes[?
    State == \`OPEN\`
      && contains(Resources[].Value, to_string(\`${ORGANIZATIONS_HANDSHAKE_ACCOUNT_ID}\`))
    ].Id" \
  --output text

結果(例):

h-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

手順の完了

(参考) マネジメントコンソールの確認

  • 左ペインの"AWSアカウント"をクリックします。

AWSアカウント(画面)

  • 組織が存在することを確認します。

課題

動作確認