我正在使用cygwin安装Windows 10并尝试从中进行访问awscli.
我曾经pip install awscli安装过awscli.这个安装awscli.然后我试图运行只是aws为了看它是否已安装,我收到以下错误:
-bash: /cygdrive/c/Program Files/Anaconda2/Scripts/aws: C:\Program: bad interpreter: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我不确定为什么会这样.在这方面的任何帮助都会非常苛刻.
使用某些第三方工具(如Terraform)时,指定AWS CLI配置文件并不容易,我更喜欢使用环境变量而不是配置文件.
我有没有办法让AWS CLI只将当前配置文件AWS_ACCESS_KEY_ID和AWS_SECRET_KEY环境变量导出到我的会话?
使用AWS-CLI将数据同步到S3中的空目录时,几乎是即时的.但是,当同步到一个大目录(几百万个文件夹)时,甚至需要很长时间才能开始上传/同步文件.
有替代方法吗?看起来它试图在同步之前考虑S3目录中的所有文件 - 我不需要它,并且在没有事先检查的情况下上传数据就没问题了.
我正在尝试运行 CDK 命令来检查本地和远程堆栈的差异。
我正在使用以下命令。
cdk diff --profile saml
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息
Unable to resolve AWS account to use. It must be either configured when you define your CDK or through the environment
Run Code Online (Sandbox Code Playgroud)
我正在寻找解决此问题的方法。
有没有办法在 AWS CloudWatch Logs 中的匹配模式之前和/或之后包含 N 行?
假设我有这个查询,并且希望在每次比赛前后都有 3 行。
aws logs filter-log-events --log-group-name my-group --filter-pattern "mypattern"
Run Code Online (Sandbox Code Playgroud)
我目前唯一的解决方法是删除过滤器模式并使用 grep:
aws logs filter-log-events --log-group-name my-group | grep -A 3 -B 3 mypattern
Run Code Online (Sandbox Code Playgroud)
但是,我只想流式传输我需要的日志事件,并将其作为 aws 日志事件查询的一部分。
amazon-web-services amazon-cloudwatch aws-cli amazon-cloudwatchlogs
我正在尝试使用 aws cli 调用我的 lambda:
$ aws lambda invoke \
--function-name soc-update-dynamodb-java \
--invocation-type Event \
--payload file://invoke-payload.json \
response.json
Run Code Online (Sandbox Code Playgroud)
但是,我收到此消息:
调用 Invoke 操作时发生错误 (InvalidRequestContentException):无法将请求正文解析为 json:[Source: (byte[])"E?(?????U???? ?????k.....
payload.json 内容是一个类似 s3 事件的 json:
{
"Records": [
{
"eventVersion": "2.0",
"eventSource": "aws:s3",
"awsRegion": "eu-central-1",
"eventTime": "1970-01-01T00:00:00.000Z",
"eventName": "ObjectCreated:Put",
"userIdentity": {
"principalId": "EXAMPLE"
},
"requestParameters": {
"sourceIPAddress": "127.0.0.1"
},
"responseElements": {
"x-amz-request-id": "EXAMPLE123456789",
"x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH"
},
"s3": {
"s3SchemaVersion": "1.0",
"configurationId": "testConfigRule",
"bucket": {
"name": "soc-connect",
"ownerIdentity": {
"principalId": "EXAMPLE"
},
"arn": …Run Code Online (Sandbox Code Playgroud) 我有一个手动部署的可用 AWS Amplify 应用程序。要使用 CLI 指定此应用程序,我需要所谓的appId. 但我在哪里可以找到这个?在控制台中,我可以找到名称和 ,appArn但找不到appId.

我想用新内容更新S3存储桶(在存储桶中创建一个文件夹).什么是--expires日期格式.我没有AWS CLI在谷歌上找到任何使用的例子.有人可以帮我解决这个问题吗?
像这样的东西:
aws s3 sync $backup_home s3://backup/$app-backup/$app-$DATE --expires '$DATE'
Run Code Online (Sandbox Code Playgroud) 尝试将名为test.txt的本地文件复制到我的s3存储桶并将元数据添加到该文件中.
但它总是打印错误:
参数--metadata-directive:无效的选择,有效的选择是:COPY | 更换
是否可以使用cp命令执行此操作,因为我理解应该可以使用的文档. AWS CLI CP DOCS
这是我试过的命令:
aws s3 cp test.txt to s3://a-bucket/test.txt --metadata x-amz-meta-cms-id:34533452
aws s3 cp test.txt to s3://a-bucket/test.txt --metadata-directive COPY --metadata x-amz-meta-cms-id:34533452
aws s3 cp test.txt to s3://a-bucket/test.txt --metadata-directive COPY --metadata '{"x-amz-meta-cms-id":"34533452"}'
aws s3 cp test.txt to s3://a-bucket/test.txt --metadata '{"x-amz-meta-cms-id":"34533452"}'
Run Code Online (Sandbox Code Playgroud)
aws --version: aws-cli/1.9.7 Python/2.7.10 Darwin/16.1.0 botocore/1.3.7
操作系统:macOS Sierra版本10.12.1
编辑
值得一提的是,上传没有--metadata标志的文件可以正常工作.
嗯,我已经检查了我的cli版本的帮助,aws s3 cp help
结果它没有--metadata作为一个选项列出,因为上面给定链接的文档确实如此.
如果runnig旧版本的aws cli
Use aws s3api put-object
Run Code Online (Sandbox Code Playgroud)
如何将文件上传到存储桶并添加元数据:
aws s3api put-object --bucket a-bucket --key test.txt …Run Code Online (Sandbox Code Playgroud) 编辑:这是为我工作的解决方案:
export AWS_DEFAULT_PROFILE=user2
Run Code Online (Sandbox Code Playgroud)
完整问题如下所示:
(1.)成功为AWS CLI配置第二个配置文件后,我尝试使用以下命令在bash会话中将配置文件设置为user2失败:
export AWS_PROFILE=user2
Run Code Online (Sandbox Code Playgroud)
...根据这里的建议:https : //docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html
(2.)以下命令有效:
aws s3 ls --profile user2
Run Code Online (Sandbox Code Playgroud)
因此,我知道AWS CLI和user2配置文件都在我的计算机上工作。
(3.)但是,当我随后(即输入“ export AWS_PROFILE = user2”后)尝试执行以下操作:
aws s3 ls
Run Code Online (Sandbox Code Playgroud)
... AWS的响应假定我想以默认用户身份查询它(不是user2)
(4.)因此,我可以从命令行使用user2配置文件的唯一方法是继续在每个命令后附加“ --profile user2”,这很繁琐。
(5.)
echo $AWS_PROFILE
Run Code Online (Sandbox Code Playgroud)
产量:
>> user2
Run Code Online (Sandbox Code Playgroud)
,正如预期的那样。
知道这里发生了什么吗?我确定我在某处犯了一些愚蠢的错误。
aws-cli ×10
amazon-s3 ×4
aws-lambda ×2
bash ×2
app-id ×1
aws-cdk ×1
bigdata ×1
command-line ×1
cygwin ×1
shell ×1