使用REST API无法创建eks集群。

0

【以下的问题经过翻译处理】 我需要使用REST API/ansible创建一个eks cluster,但是ansible community.aws.aws_eks_cluster没有kubernetesNetworkConfig参数,我们无法在创建集群时指定serviceIpv4Cidr。

我使用以下链接创建集群,但无法在POST rest api请求中传递授权凭据, https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html uri: url: "https://eks.us-east-1.amazonaws.com/clusters"

以下为授权参数 aws_access_key: "{{ aws_access_key1 }}" aws_secret_key: "{{ aws_secret_key1 }}" X-Amz-Security-Token: "{{ security_token1 }}"

需要使用URI ansible模块(需要在URL的headers:中使用进行身份验证) 必须传递类似以下的内容: headers: Authorization: Bearer "{{a}}"

出现了无法确定要授权的服务/操作名称的AccessDeniedException错误。

profile picture
专家
已提问 5 个月前5 查看次数
1 回答
0

【以下的回答经过翻译处理】 你好,

当你向AWS发出API请求时,你必须签署请求以便AWS能够识别发送者。你需要使用你的AWS访问密钥(包括访问密钥ID和秘密访问密钥)来签署请求。

Signature Version 4(SigV4)是向通过HTTP(s)发送的AWS API请求添加身份验证信息的过程。请参阅此 文档 了解有关SigV4的更多信息。

请参阅使用签名版本4签署AWS请求文档,了解如何使用SigV4签署AWS请求。

签署过程完成后,在进行POST /clusters请求时,你需要在Authorization header中传递你的签名。

请查看AWS文档提供的示例Python代码,了解如何使用上述sigV4签署向DynamoDB API进行POST请求。

建议使用AWS SDK执行API请求到AWS服务,因为它们会为你处理签名计算过程,你不必手动完成签署过程。

我了解通过Ansible代码实现上述步骤是一项具有挑战性的任务。因此,我以下面的替代方法。

替代方法:

在你的使用情况中,可以利用eksctl(Amazon EKS的官方CLI)来执行集群创建而无需使用REST API方法。

你可以为eksctl的集群配置文件创建一个jinja2模板,并使用Ansible命令模块运行`eksctl create

您可以为 eksctl 集群配置文件创建 jinja2 模板,并使用 Ansible 命令模块运行 eksctl create cluster -f cluster.yaml 命令来创建集群。

我希望这有帮助!

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则