获取无效ARN,如何获取ECR图像的ARN?

问题描述 投票:0回答:1

我正在尝试创建一个新标签或图像,我正在使用

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 信息。有人可以帮我解决这个问题吗?

python boto3 amazon-ecr
1个回答
0
投票

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")
© www.soinside.com 2019 - 2024. All rights reserved.