☁️

【AWS Organizations】OUから別のOUへAWSアカウントを移動させる

2021/04/19に公開

はじめに

※個人的備忘録です。

AWS CLIがめちゃめちゃ便利ということを最近知りました。
shellスクリプト自体全然書いたことがないので変なスクリプトかもしれませんが。。

本題

jqコマンドを使用しています。

実装

#!/bin/bash
AWS_PROFILE_NAME=        # aws cliのプロファイル
CURRENT_OU_ID=           # 移動元OUのID
AFTER_OU_ID=             # 移動先OUのID
GET_ACCOUNT_LENGTH=      # 移動したいアカウント数

declare -a result=()
for account in $(
    aws organizations list-accounts-for-parent \
        --parent-id ${CURRENT_OU_ID} \
        --profile=${AWS_PROFILE_NAME} \
        --max-items=${GET_ACCOUNT_LENGTH} |
        jq -r '.Accounts[].Id' |
        sed -e "s/[\r\n]\+//g"
); do
    aws organizations move-account \
        --account-id=$account \
        --source-parent-id=${CURRENT_OU_ID} \
        --destination-parent-id=${AFTER_OU_ID} \
        --profile=${AWS_PROFILE_NAME}
done
:

解説

aws organizations list-accounts-for-parent  

で取得したAWSアカウントIDを使用して、

 aws organizations move-account  

でOUの移動をしています。
それだけです。

おわりに

SDKで使用する時のように最大返却数などを気にしなくていいのは非常に助かりますね。
しばらくCLIにハマるかもしれないです笑

GitHubで編集を提案

Discussion