翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon EC2APIリクエストの冪等性の確保
ミューテーションAPIリクエストを行うと、通常、リクエストはオペレーションの非同期ワークフローが完了する前に結果を返します。リクエストが既に結果を返している場合でも、操作が完了する前にタイムアウトしたり、その他のサーバーの問題が発生したりすることもあります。これにより、リクエストが成功したかどうかを判断するのが難しくなり、操作を正常に完了するために複数回の再試行が行われることがあります。ただし、元のリクエストとその後の再試行が成功すると、操作は複数回完了します。つまり、意図したよりも多くのリソースを作成する可能性があります。
Idempotency は、APIリクエストの完了が 1 回を超えないようにします。冪等性リクエストでは、元のリクエストが正常に完了した場合、その後の再試行は追加のアクションを実行せずに正しく完了します。ただし、結果には、現在の作成ステータスなどの更新された情報が含まれている場合があります。
Amazon の ID の容量 EC2
以下のAPIアクションはデフォルトでは冪等であり、追加の設定は必要ありません。対応する AWS CLI コマンドは、デフォルトで冪等性もサポートしています。
Idempotent のデフォルト
AssociateAddress
CreateVpnConnection
DisassociateAddress
ReplaceNetworkAclAssociation
TerminateInstances
以下のAPIアクションは、オプションでクライアントトークン を使用した冪等性をサポートしています。対応する AWS CLI コマンドは、クライアントトークンを使用した冪等性もサポートしています。クライアントトークンは、最大 64 ASCII文字の一意の大文字と小文字を区別する文字列です。これらのアクションのいずれかを使用して冪等なAPIリクエストを行うには、リクエストでクライアントトークンを指定します。同じクライアントトークンを他のAPIリクエストに再利用しないでください。同じクライアントトークンと同じパラメータを使用して正常に完了したリクエストを再試行すると、それ以上のアクションを実行せずに再試行が成功します。同じクライアントトークンを使用して成功したリクエストを再試行しても、リージョンまたはアベイラビリティーゾーン以外の 1 つ以上のパラメータが異なる場合、再試行はIdempotentParameterMismatch
エラーで失敗します。
クライアントトークンを使用したIdempotent
AllocateHosts
AllocateIpamPoolCidr
AssociateClientVpnTargetNetwork
AssociateIpamResourceDiscovery
AttachVerifiedAccessTrustProvider
AuthorizeClientVpnIngress
CopyFpgaImage
CopyImage
CreateCapacityReservation
CreateCapacityReservationFleet
CreateClientVpnEndpoint
CreateClientVpnRoute
CreateEgressOnlyInternetGateway
CreateFleet
CreateFlowLogs
CreateFpgaImage
CreateInstanceConnectEndpoint
CreateIpam
CreateIpamPool
CreateIpamResourceDiscovery
CreateIpamScope
CreateLaunchTemplate
CreateLaunchTemplateVersion
CreateManagedPrefixList
CreateNatGateway
CreateNetworkAcl
CreateNetworkInsightsAccessScope
CreateNetworkInsightsPath
CreateNetworkInterface
CreateReplaceRootVolumeTask
CreateReservedInstancesListing
CreateRouteTable
CreateTrafficMirrorFilter
CreateTrafficMirrorFilterRule
CreateTrafficMirrorSession
CreateTrafficMirrorTarget
CreateVerifiedAccessEndpoint
CreateVerifiedAccessGroup
CreateVerifiedAccessInstance
CreateVerifiedAccessTrustProvider
CreateVolume
CreateVpcEndpoint
CreateVpcEndpointConnectionNotification
CreateVpcEndpointServiceConfiguration
DeleteVerifiedAccessEndpoint
DeleteVerifiedAccessGroup
DeleteVerifiedAccessInstance
DeleteVerifiedAccessTrustProvider
DetachVerifiedAccessTrustProvider
ExportImage
ImportImage
ImportSnapshot
ModifyInstanceCreditSpecification
ModifyLaunchTemplate
ModifyReservedInstances
ModifyVerifiedAccessEndpoint
ModifyVerifiedAccessEndpointPolicy
ModifyVerifiedAccessGroup
ModifyVerifiedAccessGroupPolicy
ModifyVerifiedAccessInstance
ModifyVerifiedAccessInstanceLoggingConfiguration
ModifyVerifiedAccessTrustProvider
ProvisionIpamPoolCidr
PurchaseHostReservation
RequestSpotFleet
RequestSpotInstances
RunInstances
StartNetworkInsightsAccessScopeAnalysis
StartNetworkInsightsAnalysis
冪等の種類
-
リージョン – リクエストは各リージョンで冪等です。ただし、別のリージョンで同じクライアントトークンを含む同じリクエストを使用できます。
-
ゾーン - リクエストは、リージョン内の各アベイラビリティーゾーンで冪等です。例えば、同じリージョンの への 2 回の呼び出しAllocateHostsで同じクライアントトークンを指定すると、 AvailabilityZoneパラメータに異なる値を指定した場合、呼び出しは成功します。
RunInstances 冪等性
このRunInstancesAPIアクションは、リージョンとゾーンの両方の冪等性を使用します。
使用される冪等性のタイプは、リクエストで RunInstances APIアベイラビリティーゾーンを指定する方法によって異なります。このリクエストでは、次の場合にゾーンの等価性が使用されます。
-
プレイスメントデータタイプの AvailabilityZoneパラメータを使用してアベイラビリティーゾーンを明示的に指定した場合
-
SubnetId パラメータを使用して暗黙的にアベイラビリティーゾーンを指定する場合
アベイラビリティーゾーンを明示的にも暗黙的にも指定しない場合、リクエストはリージョンの冪等性 を使用します。
ゾーン的冪等性
ゾーンの等価性により、 RunInstances APIリクエストがリージョン内の各アベイラビリティーゾーンで等価であることが保証されます。これにより、同じクライアントトークンを持つリクエストは、リージョン内の各アベイラビリティーゾーン内で 1 回のみ完了できます。ただし、同じクライアントトークンを使用して、リージョン内の他のアベイラビリティーゾーンでインスタンスを起動できます。
例えば、アus-east-1a
ベイラビリティーゾーンでインスタンスを起動するための冪等なリクエストを送信し、アベイラus-east-1b
ビリティーゾーンのリクエストで同じクライアントトークンを使用する場合、これらのアベイラビリティーゾーンごとにインスタンスを起動します。1 つ以上のパラメータが異なる場合、それらのアベイラビリティーゾーンで同じクライアントトークンを使用した後続の再試行は、それ以上のアクションを実行せずに正常に返されるか、IdempotentParameterMismatch
エラーで失敗します。
リージョンの冪等性
リージョンの冪等性は、 RunInstances APIリクエストがリージョンで冪等性であることを保証します。これにより、同じクライアントトークンを持つリクエストは、リージョン内で 1 回のみ完了できます。ただし、同じクライアントトークンを持つまったく同じリクエストを使用して、別のリージョンでインスタンスを起動できます。
例えば、 us-east-1
リージョンでインスタンスを起動するための冪等なリクエストを送信し、eu-west-1
リージョン内のリクエストで同じクライアントトークンを使用する場合、それらのリージョンのそれぞれでインスタンスを起動します。1 つ以上のパラメータが異なる場合、それらのリージョンで同じクライアントトークンを使用した後続の再試行は、それ以上のアクションを実行せずに正常に返されるか、IdempotentParameterMismatch
エラーで失敗します。
ヒント
リクエストされたリージョンのアベイラビリティーゾーンのいずれかが利用できない場合、リージョンの冪等性を使用するRunInstances リクエストは失敗する可能性があります。 AWS インフラストラクチャが提供するアベイラビリティーゾーン機能を活用するには、Instances. RunInstances requests を起動するときにゾーンの等価性を使用することをお勧めします。ゾーンの等価性を使用し、リクエストされたリージョン内の別のアベイラビリティーゾーンが利用できない場合でも、利用可能なアベイラビリティーゾーンをターゲットにすると成功します。
例
AWS CLI コマンドの例
AWS CLI コマンドを冪等化するには、 --client-token
オプションを追加します。
例 1: Idempotency
次の allocate-hosts コマンドは、クライアントトークンを含むため、等価性を使用します。
aws ec2 allocate-hosts --instance-type
m5.large
--availability-zoneeu-west-1a
--auto-placementon
--quantity1
--client-token550e8400-e29b-41d4-a716-446655440000
例 2: run-instances のリージョンの冪等性
次の run-instances コマンドは、クライアントトークンを含むため、リージョンの冪等性を使用しますが、アベイラビリティーゾーンを明示的にも暗黙的にも指定しません。
aws ec2 run-instances --image-id
ami-b232d0db
--count 1 --key-namemy-key-pair
--client-token550e8400-e29b-41d4-a716-446655440000
例 3: run-instances ゾーンの冪等性
次の run-instances コマンドは、クライアントトークンと明示的に指定されたアベイラビリティーゾーンを含むため、ゾーンの等価性を使用します。
aws ec2 run-instances --placement "AvailabilityZone=
us-east-1a
" --image-idami-b232d0db
--count 1 --key-namemy-key-pair
--client-token550e8400-e29b-41d4-a716-446655440000
API リクエストの例
API リクエストを冪等するには、 ClientToken
パラメータを追加します。
例 1: Idempotency
次のAllocateHostsAPIリクエストでは、クライアントトークンが含まれているため、冪等性を使用します。
https://ec2.amazonaws.com/?Action=AllocateHosts &AvailabilityZone=
us-east-1b
&InstanceType=m5.large
&Quantity=1
&AutoPlacement=off
&ClientToken=550e8400-e29b-41d4-a716-446655440000
&AUTHPARAMS
例 2: RunInstances リージョンの冪等性
次のRunInstancesAPIリクエストは、クライアントトークンを含むが、アベイラビリティーゾーンを明示的または暗黙的に指定しないため、リージョンの冪等性を使用します。
https://ec2.amazonaws.com/?Action=RunInstances &ImageId=
ami-3ac33653
&MaxCount=1
&MinCount=1
&KeyName=my-key-pair
&ClientToken=550e8400-e29b-41d4-a716-446655440000
&AUTHPARAMS
例 3: RunInstances ゾーンの冪等性
次のRunInstancesAPIリクエストでは、クライアントトークンと明示的に指定されたアベイラビリティーゾーンが含まれているため、ゾーンの等価性を使用します。
https://ec2.amazonaws.com/?Action=RunInstances &Placement.AvailabilityZone=
us-east-1d
&ImageId=ami-3ac33653
&MaxCount=1
&MinCount=1
&KeyName=my-key-pair
&ClientToken=550e8400-e29b-41d4-a716-446655440000
&AUTHPARAMS
冪等リクエストのレコメンデーションを再試行する
次の表は、冪等なAPIリクエストに対して取得される可能性のある一般的なレスポンスの一部と、再試行に関する推奨事項を示しています。
レスポンス | 推奨事項 | コメント |
---|---|---|
200 (OK) |
再試行しないでください |
元のリクエストは正しく完了しています。それ以降に再試行しても正常に戻ります。 |
400 シリーズレスポンスコード (クライアントエラー ) |
再試行しないでください |
次のうち、リクエストに問題があります。
リクエストに状態の変更処理中のリソースが含まれている場合、リクエストを再試行すると成功する可能性があります。 |
500 シリーズレスポンスコード (サーバーエラー ) |
再試行 |
エラーは AWS サーバー側の問題が原因であり、一般的に一時的なものです。適切なバックオフ戦略でリクエストを繰り返してください。 |