2

ユーザーとロールを自動的に作成する AWS IAM のアプリケーションで奇妙な動作に直面しています。

私の一連の操作は次のとおりです。

  1. アクションを送信しますCreateUser
  2. CreateAccessKeyこの作成されたユーザーにアクションを送信します。
  3. この作成されたユーザーにアクションを送信しGetUserて、アカウント ID を取得します。ルート キーとシークレットしか持っていないため、これを行う必要があります。
  4. プリンシパルがこの作成されたユーザーであるアクションCreateRoleを送信します。AssumeRolePolicyDocument

手順 4 を実行すると、MalformedPolicyDocument( Invalid principal in policy: "AWS":"arn:aws:iam::123412341234:user/newuser") が表示されます。

しかし、ステップ 4 の前に 15 秒の遅延を置くと、問題なく実行されます。

ユーザーを使用する準備ができているかどうかを確認するために IAM Web サービスを読み取るなど、一定の遅延に固執する必要のないワークフローはありますか?

4

1 に答える 1

3

Deterministically create and tagging EC2 instancesに対する私の回答で概説したように、AWS API は通常、結果整合性のみとして扱う必要があります。

具体的には、すべての API アクションが AWS によって完全に独立して操作されている、つまり、それ自体がマイクロ サービスであると想定するのが妥当であると述べています。これは、Amazon EC2のようなサービス内でも、 AWS Identity and Access Management (IAM)の場合でも、リソース状態の変更をもたらす 1 つの API アクションへの呼び出しが、その中の (すべての) 他の API アクションに必ずしも表示されない理由を説明しています。つまり、作成されたユーザーは他の IAM API のいずれかですでに表示されてGetUserいますが、別の IAM API アクションではまだ表示されていませんCreateRole

この固有の特性を回避するための正しいワークフローは、指数バックオフ戦略を使用して目的の API 呼び出しを成功するまで (または構成されたタイムアウトに達するまで) 繰り返すことです。いくつかのAWS SDKは、通常は透過的に適用される指数サポートによる再試行の統合サポートを提供しますが、必要に応じて特定のシナリオに合わせて調整することができます。

于 2014-04-26T13:05:08.443 に答える