我正在使用Crossplane和Kubernetes作为配置AWS基础设施的一种方式。使用ArgoCD自动部署资源。AWS资源正在使用provider-aws@v0.40.0进行调配。
我面临的问题是,当我尝试创建任何IAM资源时,例如Role
,RolePolicyAttachment
,Policy
或OpenIDConnectProvider
,资源的创建失败,引用的原因是因为缺少提供的区域。
下面是创建Role
失败的消息:
failed to get Role with name: operation error IAM: GetRole, failed to resolve service endpoint, an AWS region is required, but was not found
字符串
使用此清单:
apiVersion: iam.aws.crossplane.io/v1beta1
kind: Role
metadata:
name: test-role
spec:
providerConfigRef:
name: aws
forProvider:
assumeRolePolicyDocument: |
{
// redacted
}
型
请注意,无法将区域传递到Role图表中,如documented here。也没有办法在ProviderConfig中提供区域。
IAM的服务端点也是does not contain a region,因为它是全局的。
AWS API文档还建议不需要提供区域来进行GetRole调用。
这个错误表明需要一个区域,但是似乎不需要它来提供资源,并且我没有办法向Crossplane提供一个区域。我希望我所拥有的应该工作。请注意,使用我正在使用的Crossplane设置可以提供具有区域字段的其他资源。
1条答案
按热度按时间7jmck4yq1#
一种解决方法是在
ControllerConfig
声明中提供一个AWS_REGION
环境变量。举例来说:字符串
答案来自
provider-aws
repo上的this Github issue,它讨论了同样的问题。