所以,我正在查看 botocore 的源代码,似乎 botocore 在名为
amz-sdk-invocation-id
的函数的标头中添加了一个名为
add_retry_headers
的请求标头。
这是否意味着boto3生成的每个请求都是幂等的? 对于像 EC2 这样带有
client-token
参数的请求呢? client-token
应该为创建 ec2 实例提供幂等性。那会如何运作呢?我的意思是,如果 client-token
不同但 amz-sdk-invocation-id
相同,或者 amz-sdk-invocation-id
不同但 client-token
相同,会发生什么?
Kotlin SDK 将此属性定义为:
生成的唯一请求 ID,用于跟踪正在进行的客户端请求。
这已经暗示了该属性仅在客户端使用,而不是在服务器(AWS)端使用。
此外:可以手动制作 HTTP 请求来创建 EC2 实例,并且不需要添加此标头。 (包含有关原始 HTTP 请求所需信息的页面,以及 所需标头列表 - 甚至没有提及
aws-sdk-invocation-id
)
所以结论是: 仅将其视为 botocore 的实现细节,并且仅依赖
client-token
,因为这是明确记录的用于提供幂等性的唯一参数。