我正在尝试创建一个新标签或图像,我正在使用
boto3.client('ecr').tag_resource
response = ecr.tag_resource(
resourceArn=f'arn:aws:ecr:{region_name}:{account_id}:image/{repository_name}@{image_digest}',
tags=[{'Key': 'tag-key', 'Value': image_tag}]
)
结果输出
InvalidParameterException
:
File ~/Documents/NuTest_Prac/nu_py3/nutest-py3/env/lib/python3.9/site-packages/botocore/client.py:530, in ClientCreator._create_api_method.<locals>._api_call(self, *args, **kwargs)
526 raise TypeError(
527 f"{py_operation_name}() only accepts keyword arguments."
528 )
529 # The "self" in this scope is referring to the BaseClient.
--> 530 return self._make_api_call(operation_name, kwargs)
File ~/Documents/NuTest_Prac/nu_py3/nutest-py3/env/lib/python3.9/site-packages/botocore/client.py:964, in BaseClient._make_api_call(self, operation_name, api_params)
962 error_code = parsed_response.get("Error", {}).get("Code")
963 error_class = self.exceptions.from_code(error_code)
--> 964 raise error_class(parsed_response, operation_name)
965 else:
966 return parsed_response
InvalidParameterException: An error occurred (InvalidParameterException) when calling the TagResource operation: Invalid parameter at 'resourceArn' failed to satisfy constraint: 'Invalid ARN'
我进行了很多探索,但找不到可以帮助我创建或获取有效 ARN 的 ARN 信息。有人可以帮我解决这个问题吗?
tag_resource
方法用于标记AWS资源,与图像标签无关。如果你想标记图像,你需要使用 put_image 方法:
# Get the image's details to get its manifest
get_image_response = ecr.batch_get_image(
registryId=account_id,
repositoryName=repository_name,
imageIds=[{"imageDigest": image_digest}]
)
if get_image_response["images"]:
manifest = get_image_response["images"][0]["imageManifest"]
manifest_media_type = get_image_response["images"][0]["imageManifestMediaType"]
# Tag the image
response = ecr.put_image(
registryId=account_id,
repositoryName=repository_name,
imageManifest=manifest,
imageManifestMediaType=manifest_media_type,
imageTag=image_tag,
imageDigest=image_digest
)
else:
print("Image not found")