AWS プログラミング

Lambdaで「An error occurred (AccessDenied) when calling the Describe ...」のエラー

LambdaからLBの情報をAPI経由で取得しようとしたら以下のエラーになったのでその対処法。

 

An error occurred (AccessDenied) when calling the Describe*** operation: User: *** is not authorized to perform: elasticloadbalancing:Describe***

 

結論としては、LBは一部のAPIをリソースレベルでの制御を許可していない(サポートしていない)から

です。

 

リソースレベルのサポートとは特定のLBに対してのみ指定したアクションを許可させたいみたいな。

 

「AというLBに対してはAPI許可したいけど、BというLBには許可したくない」

 

みたいなやつ

 

IAMのポリシーでResourceブロックにARNで指定するやつと言った方がわかりやすいかも。

 

LBでリソースレベルでの許可がサポートされないAPI

  • API バージョン 2015-12-01:
    • DescribeAccountLimits
    • DescribeListenerCertificates
    • DescribeListeners
    • DescribeLoadBalancerAttributes
    • DescribeLoadBalancers
    • DescribeRules
    • DescribeSSLPolicies
    • DescribeTags
    • DescribeTargetGroupAttributes
    • DescribeTargetGroups
    • DescribeTargetHealth
  • API バージョン 2012-06-01:
    • DescribeInstanceHealth
    • DescribeLoadBalancerAttributes
    • DescribeLoadBalancerPolicyTypes
    • DescribeLoadBalancers
    • DescribeLoadBalancerPolicies
    • DescribeTags

     

本内容は、公式ページに詳しく記載があります。

 

ちなみに今回、自分の場合は「DescribeTargetHealth」をリソースレベルで制御しようとしてエラーになりました。

 

上記のAPIに関してはIAMポリシーのResource指定を「*」にする必要があります。これで解決。

 

まあDescribeだから最悪いいんだろう。。DeleteとかがResource指定できなかったら怖いけどさ。。

 

AWSをしっかり基礎からやりたい方へ

AWSをちゃんと基礎から学びたくなった方はUdemyの以下の講座がおすすめです。

AWS:ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得

 

セール時は激安なので狙って買ったほうがいいです。(定価ダメゼッタイ)

-AWS, プログラミング
-,

© 2020 クラインの備忘壺