标签: aws-cli

验证错误:在 Cloudformation 中不执行更新返回错误

当我在 CI aws-cli 中执行更新 CloudFormation 堆栈时,收到以下错误消息:

An error occurred (ValidationError) when calling the UpdateStack operation: No updates are to be performed.
Run Code Online (Sandbox Code Playgroud)

没有更新被视为错误,因此 CI 失败。知道如何捕获此错误吗?

amazon-web-services aws-cli

8
推荐指数
2
解决办法
6197
查看次数

如何使用 aws cli 命令仅显示 s3 存储桶中的目录

我需要显示 s3 存储桶中存在的所有目录,其中某些目录被隐藏,只有当我将版本过滤为“显示”而不是隐藏时才会再次显示。

同样的情况也适用于目录内我们看不到文件的文件,但是当我们选择版本中的过滤器为“显示”时,它会显示文件。

我们如何在aws-cli中看到这些文件和目录。如果您有解决方案,请帮忙。


例如:

roxor@ubuntu:~$ aws s3 ls s3://dw-etl-source-prod
workday dsr
Run Code Online (Sandbox Code Playgroud)

我需要获取 4 个目录,但由于这些目录包含版本控制,因此未显示。如果我筛选版本以显示它会提供 aws s3 UI 中的所有文件,但我如何使用 AWS CLI 执行相同操作。

bash amazon-s3 amazon-web-services aws-cli devops

8
推荐指数
1
解决办法
3万
查看次数

在 Windows 上通过 PIP 安装 AWS CLI v2

是否可以在 Windows 上通过 PIP 安装 AWS CLI v2?

在说明中推荐的安装方式是通过 MSI,但我想使用 PIP。

如果我按照 Linux 方式安装Github 上给出的CLI 会怎样:

python -m pip install awscli
Run Code Online (Sandbox Code Playgroud)

默认安装v1还是v2?

python windows installation pip aws-cli

8
推荐指数
2
解决办法
2万
查看次数

使用 aws cli 更新 AWS 中安全组的现有 IP

我有一个 shell 脚本,它将我的公共 IP 添加到指定的 ec2-security-group。我浏览了一些 AWS 文档,但找不到使用哪个 API 来更新现有 IP 地址,而不是简单地添加一个。

我经历了以下事情:

  1. 更新安全组规则描述入口
  2. 授权安全组入口

是否有一个API可以用来简单地更新安全组中现有的IP地址?

我使用以下 bash 脚本向安全组添加新条目。

#!/bin/bash
curl https://checkip.amazonaws.com > ip.txt
awk '{ print $0 "/32" }' < ip.txt > ipnew.txt
export stuff=$(cat ipnew.txt)
aws ec2 authorize-security-group-ingress --group-name XXXXX --protocol tcp --port 22 --cidr $stuff --profile xxxxx
Run Code Online (Sandbox Code Playgroud)

shell amazon-web-services aws-cli aws-security-group

8
推荐指数
3
解决办法
6545
查看次数

aws sts get-session-token ... --token-code ... 失败并显示 InvalidClientTokenId,但 MFA 控制台登录正常

我正在尝试在 AWS CLI 上检索会话令牌,如下所示:

aws sts get-session-token --serial-number arn-string --token-code mfacode

在哪里

  • arn-string从 IAM 管理控制台复制,分配的 MFA 设备的安全凭证,格式如下arn:aws:iam:<number>:mfa/<name>
  • mfacode取自已注册的虚拟 MFA 设备

错误:

An error occurred (InvalidClientTokenId) when calling the GetSessionToken operation: The security token included in the request is invalid.

但是,我使用该 MFA 设备在浏览器中登录控制台就可以了

我的 ~/.aws/ 中只有一个默认配置文件,但我不知道这会产生什么影响。

尝试过这个:

  1. 多次尝试以确保没有发生 MFA 翻转
  2. 删除 MFA 设备分配并重新分配设备 — 同样的错误
  3. 省略--token-code,希望它提示我输入 MFA 设备令牌——同样的错误
  4. 使用arn:aws:iam:<number>:user/<name>-- 与预期相同的错误,因为aws get-session-id help 明确指出它需要是 MFA 设备的 arn

我认为这与 arn-string 而不是令牌有关,但是什么?任何关于导致此问题的原因的想法都非常受欢迎。

问候,奥拉夫

amazon-web-services aws-cli multi-factor-authentication

8
推荐指数
1
解决办法
6773
查看次数

错误:提供的凭证无权为 EC2 Spot 实例创建服务相关角色

我在通过 cloudformation 创建现货队列请求时遇到错误。请求已创建,但当队列尝试请求实例时,我收到标题中提到的错误。

此处描述了所需的权限,但是当我尝试按照步骤创建AWSServiceRoleForEC2SpotFleet角色时,我没有选择“EC2 - Spot Fleet”的选项,只能选择 EC2 FLeet。奇怪的是,当我创建 CF 堆栈时,它实际上确实为我创建了该服务链接角色。

我的用户拥有管理员凭据,并且我使用“aws-ec2-spot-fleet-tagging-role”作为队列角色。

据我了解,服务链接角色只需要存在即可使其工作,但我无法手动创建它。我能够通过控制台成功创建队列,使用与模板中使用的完全相同的值,并且我也在那里选择相同的“aws-ec2-spot-fleet-tagging-role”。

我还向我的用户提供了该文档中提到的 IAM 凭据,即使它是管理员,只是为了查看我是否需要传递权限,但据我所知,只有当我在启动规范中提供实例配置文件时,我才真正需要它,我不是。这是我在模板中的资源定义:

     SpotFleetRequestConfigData: 
        TargetCapacity: 1
        IamFleetRole:  arn:aws:iam::73682036499:role/aws-ec2-spot-fleet-tagging-role
        LaunchSpecifications: 
          - ImageId: '{{resolve:ssm:TestImage:4}}' #param stored reference to AMI
            InstanceType: t2.small
            NetworkInterfaces:
              - SubnetId: !ImportValue CustomVPCStack-dmz-subnet-1
                DeviceIndex: 0
                Groups:
                  - !Ref EC2MCServerSecurityGroup
            TagSpecifications:
              - 
                ResourceType: instance
                Tags: 
                  - 
                    Key: Name
                    Value: spotfleetserver
        ReplaceUnhealthyInstances: true
        Type: maintain #default```
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 amazon-web-services aws-cloudformation aws-cli

8
推荐指数
2
解决办法
5851
查看次数

AWS SDK 配置中缺少凭证

错误:可能未处理的承诺拒绝(id:0):CredentialsError:配置中缺少凭证,如果使用 AWS_CONFIG_FILE,请设置 AWS_SDK_LOAD_CONFIG=1

我在 React Native (0.64.0) 项目中使用 "aws-sdk": "^2.918.0" 。我正在使用节点 v14.17.0 和 Windows 10 版本 21H1 操作系统构建 19043.985 上运行该程序:

// Load the AWS SDK for Node.js
var AWS = require('aws-sdk');

AWS.config.update({
  region: 'us-east-1',
  maxRetries: 3,
  httpOptions: {timeout: 30000, connectTimeout: 5000},
});

// Create the DynamoDB service object
var ddb = new AWS.DynamoDB({
  apiVersion: '2012-08-10',
});

console.log('ddb: ', ddb);
Run Code Online (Sandbox Code Playgroud)

〜/.aws/config

[default]
region=us-east-1
output=json

[profile myName]
region = us-east-1
output = json
Run Code Online (Sandbox Code Playgroud)

〜/.aws/凭证

[default]
aws_access_key_id=XXX...
aws_secret_access_key=XXX...

[mateo\.lara]
aws_access_key_id=XXX...
aws_secret_access_key=XXX...
Run Code Online (Sandbox Code Playgroud)

配置数据

使用 ddb …

amazon-web-services node.js amazon-dynamodb aws-cli aws-sdk

8
推荐指数
1
解决办法
2万
查看次数

无法在 bash 中抑制或使用 AWS-CLI 错误

我有一个简单的脚本,我想使用 AWS CLI 显示来自 AWS 的特定信息。

例如:

get_cluster_name() {
EKS_NAME=$(aws eks describe-cluster --name ${CUSTOMER_NAME}) && \
echo $EKS_NAME | jq -r .cluster.name}
Run Code Online (Sandbox Code Playgroud)

集群存在时的输出正常,我得到了集群的名称。

当集群不存在时,我得到:

An error occurred (ResourceNotFoundException) when calling the DescribeCluster operation: No cluster found for name: example_cluster.
Run Code Online (Sandbox Code Playgroud)

我的目标是在找不到集群时获得空输出。为此,我想在输出中使用条件中的返回代码或字符串查找。

问题是输出不是 stdout 或 stderr,因此我什至无法将其定向到 /dev/null 只是为了消除错误。

我怎样才能使这段代码正常工作?:

[[ $(get_cluster_name) =~ "ResourceNotFoundException" ]] && echo "EKS Cluster:....$(get_cluster_name)"
Run Code Online (Sandbox Code Playgroud)

或者

[[ $(get_cluster_name) ]] && echo "EKS Cluster:....$(get_cluster_name)"
Run Code Online (Sandbox Code Playgroud)

谢谢。

bash stdout stderr aws-cli

8
推荐指数
1
解决办法
9280
查看次数

尝试获取调用者身份时出现 InvalidClientTokenId 错误 aws

您好,我无法运行此命令 aws sts get-caller-identity

当我这样做时 sudo nano ~/.aws/credentials我只能找到这个

[default]
aws_access_key_id = my_id
aws_secret_access_key = my_secret_id
Run Code Online (Sandbox Code Playgroud)

aws configure当我执行成功的命令步骤后,aws sts get-caller-identity 我收到此错误

调用 GetCallerIdentity 操作时发生错误 (InvalidClientTokenId):请求中包含的安全令牌无效。

有什么原因可能导致这种情况吗?

amazon-web-services aws-cli aws-sts

8
推荐指数
1
解决办法
2万
查看次数

在“预安装”后,纱线重新加载或传递新配置

我正在尝试使用AWS CodeArtifact来利用私有存储库。那里的说明提到执行aws-clinpm 登录命令。此登录命令从 AWS 获取令牌并将其放置在 users 中.npmrc

我曾尝试将此登录功能放入preinstall项目的脚本中package.json,但问题是.npmrc仅在此步骤中进行修改,而在继续执行yarn install任务时不会重新加载。

有什么方法可以加载此令牌,yarn同时保持登录/安装过程无缝?

npm aws-cli package.json yarnpkg aws-codeartifact

8
推荐指数
1
解决办法
843
查看次数