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

6.2. AWSアカウントの所属Organizations組織ユニットの移動 (CloudShell: handson-cli-organizations-account: ルートから"oregon-japan-ou")

手順の目的

Organizationsルート組織ユニットに属しているAWSアカウント"handson-cli-organizations-account"をOrganizations組織ユニット"oregon-japan-ou"に移動します。

設定値の指定

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

1. AWSアカウント名

AWSアカウント名を指定します。

変数の設定:

ORGANIZATIONS_ACCOUNT_NAME="handson-cli-organizations-account"

2. 移動先のOrganizations組織ユニット名

移動先のOrganizations組織ユニット名を指定します。

変数の設定:

ORGANIZATIONS_ORGANIZATIONAL_UNIT_NAME_DESTINATION="oregon-japan-ou"

3. 移動先Organizations組織ユニットの親組織ユニットの組織ユニットID

移動先Organizations組織ユニットの親組織ユニットの組織ユニットIDを指定します。 今回はルート組織が親組織ユニットになります。

コマンド:

ORGANIZATIONS_ROOT_ID=$( \
  aws organizations list-roots \
    --query 'Roots[?Name == `Root`].Id' \
    --output text \
) \
  && echo ${ORGANIZATIONS_ROOT_ID}

結果(例):

r-xxxx

変数の設定:

ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_PARENT="${ORGANIZATIONS_ROOT_ID}" \
  && echo ${ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_PARENT}

結果(例):

r-xxxx

設定値の確認

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

変数の確認:

cat << END

  # 1. ORGANIZATIONS_ACCOUNT_NAME:"handson-cli-organizations-account"
       ORGANIZATIONS_ACCOUNT_NAME="${ORGANIZATIONS_ACCOUNT_NAME}"
  # 2. ORGANIZATIONS_ORGANIZATIONAL_UNIT_NAME_DESTINATION:"oregon-japan-ou"
       ORGANIZATIONS_ORGANIZATIONAL_UNIT_NAME_DESTINATION="${ORGANIZATIONS_ORGANIZATIONAL_UNIT_NAME_DESTINATION}"
  # 3. ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_PARENT:"r-xxxx"
       ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_PARENT="${ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_PARENT}"

END

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

処理の実行

AWSアカウントIDを取得します。

コマンド:

ORGANIZATIONS_ACCOUNT_ID=$( \
  aws organizations list-accounts \
    --query "Accounts[?Name == \`${ORGANIZATIONS_ACCOUNT_NAME}\`].Id" \
    --output text \
) \
  && echo ${ORGANIZATIONS_ACCOUNT_ID}

結果(例):

XXXXXXXXXXXX

移動元Organizations組織ユニットIDを指定します。

変数の設定:

ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_SOURCE="${ORGANIZATIONS_ROOT_ID}" \
  && echo ${ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_SOURCE}

結果(例):

r-xxxx

移動先Organizations組織ユニットIDを取得します。

コマンド:

ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_DESTINATION=$( \
  aws organizations list-organizational-units-for-parent \
    --parent-id ${ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_PARENT} \
    --query "OrganizationalUnits[?Name == \`${ORGANIZATIONS_ORGANIZATIONAL_UNIT_NAME_DESTINATION}\`].Id" \
    --output text \
) \
  && echo ${ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_DESTINATION}

結果(例):

ou-yyyy-yyyyyyyy

AWSアカウントを移動します。

変数の確認:

cat << END

  # ORGANIZATIONS_ACCOUNT_ID:"XXXXXXXXXXXX"
    ORGANIZATIONS_ACCOUNT_ID="${ORGANIZATIONS_ACCOUNT_ID}"
  # ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_SOURCE:"r-xxxx"
    ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_SOURCE="${ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_SOURCE}"
  # ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_DESTINATION:"ou-yyyy-yyyyyyyy"
    ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_DESTINATION="${ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_DESTINATION}"

END

コマンド:

aws organizations move-account \
  --account-id ${ORGANIZATIONS_ACCOUNT_ID} \
  --source-parent-id ${ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_SOURCE} \
  --destination-parent-id ${ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_DESTINATION}

結果(例):

(出力なし)

完了確認

「AWSアカウント"handson-cli-organizations-account"がOrganizations組織ユニット"oregon-japan-ou"に所属している。」ことを確認します。

コマンド:

aws organizations list-children \
  --parent-id ${ORGANIZATIONS_ORGANIZATIONAL_UNIT_ID_DESTINATION} \
  --child-type ACCOUNT \
  --query "Children[?Id == to_string(\`${ORGANIZATIONS_ACCOUNT_ID}\`)].Id" \
  --output text

結果(例):

XXXXXXXXXXXX

手順の完了

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

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

AWSアカウント(画面)

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

課題

動作確認