AWS re:Postを使用することにより、以下に同意したことになります AWS re:Post 利用規約

コマンド batch-get-resource-configでnullが返る。

0

AWS上に構築した全てのリソースの設定情報を、AWS CLIで取得したいです。 以下のコマンドをもとに、設定情報の取得を試しました。

↓ EC2インスタンスから情報を取得する場合。↓

aws configservice batch-get-resource-config --resource-keys '[ { "resourceType" : "AWS::EC2::Instance" , "resourceId": "i-xxxxxxxxxxxxxxx3" } ]' | jq ".baseConfigurationItems[].configuration" -r | jq . >> AWS__EC2__Instance_ i-xxxxxxxxxxxxxxx3.txt

このコマンドの出力結果として、設定値があるにも関わらず、"configuration"の項目がnullで返されるリソースが多数あります。 ("configuration"に、設定値が入ってくるリソースもあります。)

これは、コマンドの記載が間違えているのか、batch-get-resource-configのコマンドでは、取得できないconfigurationもあるのかどちらでしょうか。

--- aws cli 情報 --- $ aws --version aws-cli/2.14.5 Python/3.11.6 Windows/10 exe/AMD64 prompt/off

質問済み 1年前588ビュー
2回答
1
承認された回答

以下のドキュメントに記載されているリソースタイプであれば取得可能だと思います。
https://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources

「AWS::EC2::Instance」の中で取得できないEC2の情報が複数あるということでしょうか?

profile picture
エキスパート
回答済み 1年前
  • 回答ありがとうございます。

    「AWS::EC2::Instance」の中で取得できないEC2の情報が複数あるということでしょうか?

    AWS::EC2::Instaceは、全て情報が取れています。 nullが返ってくるのは、AWS::EC2::ClientVpnEndpoint や AWS::EC2::NetworkInterfaceなどです(他多数)。

    いずれもリソースとして存在しており(resource idは取得できる)、configuration 項目だけがnull値で返ってきます。

  • ENIを確認するためのコマンドを私も実行して「configuration」がnullになることを確認しました。 マネジメントコンソールからも確認してみましたが、「configuration」が元々nullになっているのでもしかしたら取得できない可能性が高いです。 a

  • 回答ありがとうございます。

    マネジメントコンソールからも確認してみましたが、「configuration」が元々nullになっているのでもしかしたら取得できない可能性が高いです。

    確かにAWS::EC2::NetworkInterfaceについては、batch-get-resource-configコマンド実行時のリソースid (eni-12xxxx)指定で configuration: null 以外の情報は取れても、コンソール上で該当リソースidがヒットしないものがありました。 存在しないので、設定情報が返ってこないというのは納得できます。

    しかし、コンソール上で存在を確認したリソース (eni-34xxxx)に対して、configuration: nullで返ってくる理由が分からないです。 コンソール上で確認すると、該当リソースにはmacアドレスやIPアドレス、セキュリティグループなど色々な設定がされているため、 これらの情報がconfiguration 項目に入ってくるのが期待値です。

  • 取得されない理由が分かりました。 AWS Configの設定からNetworkInterfaceのリソースを記録するようにしてみてください。 そうするとconfigurationにIPアドレスなどの情報が含まれるようになりました。 a
    b

  • 回答ありがとうございます。

    AWS Configの設定からNetworkInterfaceのリソースを記録するようにしてみてください。 そうするとconfigurationにIPアドレスなどの情報が含まれるようになりました。

    お教えいただいた設定(AWS Config→設定→記録するリソースタイプ: AWS::EC2::NetworkInterfaceを追加)をすることで、期待通りの値が取得できました。 設定情報を取得できていない他のリソースタイプについても、ここに追加することで設定値が取得できそうです。

    この度は、迅速な対応ありがとうございました。

1

AWS EC2 NetworkInterfaceを記録するように設定すると以下のように出力されるようになります。

aws configservice batch-get-resource-config --resource-keys '[ { "resourceType" : "AWS::EC2::NetworkInterface" , "resourceId": "eni-yyyyyyyyyyyyy" } ]'
{
    "baseConfigurationItems": [
        {
            "version": "1.3",
            "accountId": "111111111111",
            "configurationItemCaptureTime": "2023-12-22T07:21:54.239000+00:00",
            "configurationItemStatus": "OK",
            "configurationStateId": "11111111111",
            "arn": "arn:aws:ec2:ap-northeast-1:111111111111:network-interface/eni-yyyyyyyyyyyyy",
            "resourceType": "AWS::EC2::NetworkInterface",
            "resourceId": "eni-yyyyyyyyyyyyy",
            "awsRegion": "ap-northeast-1",
            "availabilityZone": "ap-northeast-1c",
            "configuration": "{\"association\":null,\"attachment\":{\"attachTime\":\"2023-11-15T14:16:06.000Z\",\"attachmentId\":\"eni-attach-yyyyyyyyyyyyy\",\"deleteOnTermination\":true,\"deviceIndex\":0,\"networkCardIndex\":0,\"instanceId\":\"i-yyyyyyyyyyyyy\",\"instanceOwnerId\":\"111111111111\",\"status\":\"attached\",\"enaSrdSpecification\":null},\"availabilityZone\":\"ap-northeast-1c\",\"connectionTrackingConfiguration\":null,\"description\":\"\",\"groups\":[{\"groupName\":\"web-server\",\"groupId\":\"sg-yyyyyyyyyyyyy\"}],\"interfaceType\":\"interface\",\"ipv6Addresses\":[],\"macAddress\":\"0a:b6:e1:11:11:11\",\"networkInterfaceId\":\"eni-yyyyyyyyyyyyy\",\"outpostArn\":null,\"ownerId\":\"111111111111\",\"privateDnsName\":\"ip-172-31-1-71.ap-northeast-1.compute.internal\",\"privateIpAddress\":\"172.31.1.71\",\"privateIpAddresses\":[{\"association\":null,\"primary\":true,\"privateDnsName\":\"ip-172-31-1-71.ap-northeast-1.compute.internal\",\"privateIpAddress\":\"172.31.1.71\"}],\"ipv4Prefixes\":null,\"ipv6Prefixes\":null,\"requesterId\":null,\"requesterManaged\":false,\"sourceDestCheck\":true,\"status\":\"in-use\",\"subnetId\":\"subnet-yyyyyyyyyyyyy\",\"tagSet\":[],\"vpcId\":\"vpc-yyyyyyyyyyyyy\",\"denyAllIgwTraffic\":null,\"ipv6Native\":null,\"ipv6Address\":null}",
            "supplementaryConfiguration": {}
        }
    ],
    "unprocessedResourceKeys": []
}
profile picture
エキスパート
回答済み 1年前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン