AWSアカウントの連絡先情報が SDK/CLI での参照と更新が出来るようになりました

2022.07.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

AWSアカウントにはアカウントの連絡先情報という設定項目があります。

本日のアップデートでこちらを AWS SDK/CLI から操作(参照と更新)が出来るようになりました。
そして、Organizations利用時に組織アカウントを対象に管理することも出来るようになっています。

使い方

AWS CLI であれば、v1.25.36から利用可能です。
aws accountget-contact-informationput-contact-informationを使います。
本日時点では v2 では利用出来ません。v2 では引き続き代替連絡先のみ操作可能です。

以下の必須項目のみを指定して更新してみます。

aws-v1 account put-contact-information --contact-information \
'{
    "AddressLine1": "address1", 
    "City": "Sapporo Shi", 
    "CountryCode": "JP", 
    "FullName": "fullnamehoge", 
    "PhoneNumber": "+81xxxxxxxxxxx", 
    "PostalCode": "000-0000"
}' --profile piyo

更新出来ましたね。

CLI で取得も出来るようになっているようなので取得もしてみましょう。

% aws-v1 account get-contact-information --profile piyo
{
    "ContactInformation": {
        "AddressLine1": "address1",
        "City": "Sapporo Shi",
        "CountryCode": "JP",
        "FullName": "fullnamehoge",
        "PhoneNumber": "+81xxxxxxxxxxx",
        "PostalCode": "000-0000"
    }
}

取得出来ました。

入力形式

項目ごとに必須チェックと文字列長のチェックが行われています。

項目 必須 文字列長
AddressLine1 Y 1~60
AddressLine2 1~60
AddressLine3 1~60
City Y 1~50
CompanyName 1~50
CountryCode Y 2
DistrictOrCounty 1~50
FullName Y 1~50
PhoneNumber Y 1~20
PostalCode Y 1~20
StateOrRegion 1~50
WebsiteUrl 1~256

特殊なチェックもいくつかあります。

まず、国コードは ISO 3166-1 alpha-2 で指定する必要があります。
最初適当に81を指定して怒られました。

% aws-v1 account put-contact-information --contact-information \
'{
    "AddressLine1": "address1", 
    "City": "Sapporo Shi", 
    "CountryCode": "81", 
    "FullName": "fullnamehoge", 
    "PhoneNumber": "+81xxxxxxxxxxx", 
    "PostalCode": "000-0000"
}' --profile piyo

An error occurred (ValidationException) when calling the PutContactInformation operation: The specified CountryCode is not valid: '81'. Please use a valid 2-letter ISO-3166 code.

電話番号については^[+][\s0-9()-]+$の正規表現でチェックされています。
少し厄介なのが、マネジメントコンソールと形式が違ってる点です。マネジメントコンソールから入力する場合はローカル形式の080xxxxxxxxでも入力出来たのですが、今回の機能で設定する場合は E.164形式の+xxxxxxxxxxxx形式にする必要がありますので導入前後で変わってしまう場合があります。

% aws-v1 account put-contact-information --contact-information \
'{
    "AddressLine1": "address1", 
    "City": "Sapporo Shi", 
    "CountryCode": "JP", 
    "FullName": "fullnamehoge", 
    "PhoneNumber": "080xxxxxxxx", 
    "PostalCode": "000-0000"
}' --profile piyo

An error occurred (ValidationException) when calling the PutContactInformation operation: [ECMA 262 regex "^[+][\s0-9()-]+$" does not match input string "080xxxxxxxx"]

Organizations

これだけと言えばこれだけなのですが、Organizationsを使っている場合に組織アカウントに対しても使うことが出来ます。
そちらも試してみましょう。

使い方は簡単で、コマンドは先程と同じものを使用します。
オプションでAWSアカウントIDを指定することが出来るので、対象のアカウントIDを指定するだけです。

本機能を利用する前提として、Organizations のサービスからAWS Account Managementが有効化されている必要があります。

信頼アクセスが無効化されている状態の場合は以下のようなエラーとなります。

% aws-v1 account put-contact-information --account-id 123456789012 --contact-information \
'{
    "AddressLine1": "address1", 
    "City": "Sapporo Shi", 
    "CountryCode": "JP", 
    "FullName": "fullnamechild", 
    "PhoneNumber": "+81xxxxxxxxxxx", 
    "PostalCode": "000-0000"
}' --profile piyo

An error occurred (AccessDeniedException) when calling the PutContactInformation operation: User: arn:aws:iam::111222333444:user/piyo is not authorized to perform: account:PutContactInformation (Your organization must first enable trusted access with AWS Account Management.)

有効化されている場合は成功し、更新されます。

注意点として、本日時点ではマネジメントコンソールのOrganizationsポータル画面からの組織アカウント連絡先情報の参照と更新は出来ません。
以下のようにタブとしては存在していますが、管理出来るのは代替連絡先のみとなっています。

さいごに

本日はAWSアカウントの連絡先情報が SDK/CLI での参照と更新が出来るようになっていたので、利用方法などを検証してみました。

たくさんの組織アカウントを管理している場合で連絡先情報の一括更新が必要な場合はこの機能だいぶ助かる気がしますね。
ただし、従来のマネジメントコンソールで入力出来ていた入力形式が許容されなくなっているようだったのでご注意ください。