错误信息指出Amazon SP-API 的 getOrder API 不允许Root账户进行操作。要解决此问题,需要创建新的IAM用户来代替Root账户。并确保为该用户分配了必要的订单API权限。
以下是创建IAM用户,并在AWS控制台中为它分配订单API权限的代码示例:
import boto3
# 创建IAM User并获取User的Access Key ID和Secret Access Key
client = boto3.client('iam')
response = client.create_user(UserName='NewUser')
response = client.create_access_key(UserName='NewUser')
access_key_id = response['AccessKey']['AccessKeyId']
secret_access_key = response['AccessKey']['SecretAccessKey']
# 为User分配必要的API权限
policy = {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"orders:ListOrders",
"orders:GetOrder"
],
"Resource": "*"
}
]
}
client = boto3.client('iam')
response = client.create_policy(
PolicyName='NewPolicy',
PolicyDocument=json.dumps(policy)
)
policy_arn = response['Policy']['Arn']
response = client.attach_user_policy(
UserName='NewUser',
PolicyArn=policy_arn
)
这段代码会创建一个新的IAM User和一个新的Policy,然后将用于的API权限附加给User。使用新的Access Key ID和Secret Access Key来调用Amazon SP-API的getOrder API就可以成功执行操作了。