标签: aws-sdk

如何使用匿名用户将aws CLI配置为s3 cp

我需要从s3存储桶中递归下载文件.s3存储桶允许匿名访问.

如何在不使用匿名用户提供AWS Access Key的情况下列出文件并下载它们?

我的命令是:

aws s3 cp s3://anonymous@big-data-benchmark/pavlo/text/tiny/rankings/uservisits uservisit --region us-east --recursive
Run Code Online (Sandbox Code Playgroud)

aws表示:

Unable to locate credentials. You can configure credentials by running "aws 配置"

amazon-s3 amazon-web-services aws-sdk

13
推荐指数
2
解决办法
4458
查看次数

AWS IOT - Credential的范围应该是正确的服务

我正在尝试访问一个简单的AWS IOT REST服务,但我还没有成功.这就是我做的.

  1. 我在我的aws中创建了一个iam用户,并下载了访问密钥和密钥
  2. 使用该用户登录AWS IOT并创建"事物"
  3. 从thing的属性中我找到了影子的REST URL
  4. 使用Postman的新"aws签名"功能,并为其提供访问密钥,密钥,区域(us-east-1)和服务名称(iot)
  5. 试图"获取"端点,这就是我得到的 -

    { "message": "Credential should be scoped to correct service. ", "traceId": "be056198-d202-455f-ab85-805defd1260d" }

  6. 我认为邮递员有问题,所以我尝试使用连接到S3的aws-sdk-sample示例并将其更改为连接到IOT URL.这是我的程序片段(Java)

    String awsAccessKey = "fasfasfasdfsdafs";
    String awsSecretKey = "asdfasdfasfasdfasdfasdf/asdfsdafsd/fsdafasdf";
    
    URL  endpointUrl = null;
    String regionName = "us-east-1";
    try {
        endpointUrl = new URL("https://dasfsdfasdf.iot.us-east-1.amazonaws.com/things/SOMETHING/shadow");
    }catch (Exception e){
        e.printStackTrace();
    }
    Map<String, String> headers = new HashMap<String, String>();
    headers.put("x-amz-content-sha256", AWSSignerBase.EMPTY_BODY_SHA256);
    
    AWSSignerForAuthorizationHeader signer = new AWSSignerForAuthorizationHeader(
            endpointUrl, "GET", "iot", regionName);
    String authorization = signer.computeSignature(headers,
            null, // no query parameters …
    Run Code Online (Sandbox Code Playgroud)

amazon-web-services iot aws-sdk aws-iot

13
推荐指数
1
解决办法
5082
查看次数

swf respondDecisionTaskCompleted调用,响应时间降低超时

我们有一个确定的工作人员正在运行,随着时间的推移,我们注意到"respondDecisionTaskCompleted"调用的响应时间越来越慢,我们尝试使用相同的SWF客户端实例以及在每次调用时创建客户端的新实例,但仍然会遇到相同的行为,有时响应时间最长可达3至5分钟.

我们预计会出现某种泄漏,因为当我们重新部署时,响应时间变得非常快,然后在几百次调用后降级.

我们正在使用javascript AWS SDK.

关于我们应该在哪里研究的任何建议?

谢谢,

javascript flash aws-sdk

13
推荐指数
0
解决办法
120
查看次数

CloudFront背后的API网关是否不支持AWS_IAM身份验证?

似乎无法调用通过CloudFront分配启用AWS_IAM保护的REST API.

以下是如何重现这个:

  • 使用API​​网关创建REST API
  • 使用AWS_IAM身份验证保护REST API方法
  • 创建面向REST API的CloudFront分配
  • 在Route 53中创建一个以CloudFront Distribution为目标的A Record

现在使用经过身份验证的用户(我使用Cognito UserPool用户和aws-amplify)来调用

  1. 受保护的REST API方法及其API网关URL = SUCCESS
  2. 受保护的REST API方法通过CloudFront分发URL = FAILURE
  3. 受保护的REST API方法通过Route 53域URL = FAILURE

我得到的错误是:

{"message":"我们计算的请求签名与您提供的签名不匹配.请检查您的AWS秘密访问密钥和签名方法.有关详细信息,请参阅服务文档."}

我无法相信AWS不支持自定义域后面的AWS_IAM受保护端点,因为这必须是一个非常常见的用例.

因此,请您提供一份如何实现这一目标的详细清单?

谢谢

amazon-cloudfront amazon-cognito aws-sdk aws-api-gateway aws-amplify

13
推荐指数
2
解决办法
1151
查看次数

多个文件的预签名网址?

我已经编写了一个实现,用于为aws-s3上的存储桶生成预先签名的URL.它可以正常工作,用于获取单个文件/对象.

我如何为整个目录生成预先签名的URL?让我们这样说吧,在我的s3存储桶上,有多个文件夹都有自己的小html5应用程序.每个文件夹都有自己的一组html,css,js以及媒体文件.在这种情况下,我不会为单个对象生成预先签名的URL.

如果我为单个文件提供预先签名的URL,例如:文件夹的index.html,该文件也需要加载css,js和media文件.我们没有签名网址的文件.

我不太确定如何实施这个.

amazon-s3 amazon-web-services aws-sdk

12
推荐指数
3
解决办法
8627
查看次数

在Node中本地使用dynamodb时"无法从任何提供程序加载凭据"

我在本地设置一个dynamodb来测试我的Node应用程序.要设置它,我只需要从这里复制代码并根据我的需要进行调整.
这是代码:

var AWS = require("aws-sdk");

var config = ({
  "apiVersion": "2012-08-10",
  "accessKeyId": "abcde",
  "secretAccessKey": "abcde",
  "region": "us-west-2",
  "endpoint": "http://localhost:8001",
});

var dynamodb = new AWS.DynamoDB(config);

var params = {
    TableName : "Movies",
    KeySchema: [       
        { AttributeName: "year", KeyType: "HASH"},  //Partition key
        { AttributeName: "title", KeyType: "RANGE" }  //Sort key
    ],
    AttributeDefinitions: [       
        { AttributeName: "year", AttributeType: "N" },
        { AttributeName: "title", AttributeType: "S" }
    ],
    ProvisionedThroughput: {       
        ReadCapacityUnits: 10, 
        WriteCapacityUnits: 10
    }
};

dynamodb.createTable(params, function(err, data) { …
Run Code Online (Sandbox Code Playgroud)

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

12
推荐指数
5
解决办法
1万
查看次数

获取AWS SMS的交付状态

我正在通过节点SDK从AWS发送短信.短信很顺利,我正在尝试获取交付信息.显然它不是那么容易,需要设置SNS将日志发送到Cloudwatch并解析CloudWatch以获取查询MessageId的交付信息:https://stackoverflow.com/a/40327061/2054629

如果我通过SNS Web界面发送短信,日志我会看到cloudwatch中的日志,但是当我通过节点SDK发送它们时.在从节点发送之前,我无法获得有关如何设置内容的信息.

理想情况下,我希望实现以下目标:

const sendSMS = async (message, number) => {
    // send the SMS
    // wait to get delivery info
    // resolve with delivery info, or reject if failed
}
Run Code Online (Sandbox Code Playgroud)

目前我有:

import AWS from 'aws-sdk';

AWS.config.update({
  accessKeyId: accessKey,
  secretAccessKey: secretKey,
  region: 'us-east-1',
});

const sns = new AWS.SNS();

const sendSMS = async (message, number) => {
  return await new Promise((resolve, reject) => {
    sns.publish({
      Message: message,
      MessageStructure: 'string',
      PhoneNumber: number,
    }, (err, res) => {
      if …
Run Code Online (Sandbox Code Playgroud)

sms amazon-web-services node.js amazon-sns aws-sdk

12
推荐指数
1
解决办法
749
查看次数

允许Lambda的S3策略

我对使用AWS策略生成器创建的S3存储桶具有以下策略,以允许以特定角色运行的lambda访问存储桶中的文件.但是,当我执行Lambda时,我获得403权限被拒绝:

"errorMessage": "Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: <requestId>)",
  "errorType": "com.amazonaws.services.s3.model.AmazonS3Exception",
Run Code Online (Sandbox Code Playgroud)

S3存储桶的策略:

{
"Version": "2012-10-17",
"Id": "Policy<number>",
"Statement": [
    {
        "Sid": "Stmt<number>",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::<account>:role/<roleName>"
        },
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::<bucketName>/*"
    }
]
}
Run Code Online (Sandbox Code Playgroud)

这个政策有什么问题?Lamba正在使用策略中配置的角色运行.

amazon-s3 amazon-web-services aws-sdk aws-lambda

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

AmazonS3:获取警告:S3AbortableInputStream:并非所有字节都从S3ObjectInputStream读取,中止HTTP连接

这是我得到的警告:

S3AbortableInputStream:并非所有字节都从S3ObjectInputStream中读取,从而中止HTTP连接.这可能是错误,可能导致次优行为.通过范围GET仅请求您需要的字节或在使用后消耗输入流.

我尝试使用try with resources但是S3ObjectInputStream似乎没有通过此方法关闭.

 try (S3Object s3object = s3Client.getObject(new GetObjectRequest(bucket, key));
      S3ObjectInputStream s3ObjectInputStream = s3object.getObjectContent();
      BufferedReader reader = new BufferedReader(new InputStreamReader(s3ObjectInputStream, StandardCharsets.UTF_8));
    ){
  //some code here blah blah blah
 }
Run Code Online (Sandbox Code Playgroud)

我也试过下面的代码并明确关闭,但这也不起作用:

S3Object s3object = s3Client.getObject(new GetObjectRequest(bucket, key));
S3ObjectInputStream s3ObjectInputStream = s3object.getObjectContent();

try (BufferedReader reader = new BufferedReader(new InputStreamReader(s3ObjectInputStream, StandardCharsets.UTF_8));
){
     //some code here blah blah
     s3ObjectInputStream.close();
     s3object.close();
}
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

PS:我只从S3读取两行文件,文件中有更多数据.

amazon-s3 aws-sdk aws-java-sdk

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

如何使用Cognito返回的代码获取AWS凭据?

现在,我正在努力了解AWS Cognito所以也许有人可以帮助我.我设置了一个域来为我的用户池提供Cognito的托管UI,就像这里描述的那样.因此,当我访问时,https://<my-domain>.auth.us-east-1.amazoncognito.com/login?response_type=code&client_id=<MY_POOL_CLIENT_ID>&redirect_uri=https://localhost:8080我会看到一个登录页面,我的用户可以通过Google登录我的应用程序.那部分工作得很好.

我很困惑在用户登录后如何处理从该页面返回的代码.因此,一旦我被重定向到Google并授权应用程序查看我的信息,我将被重定向回我的一个URL并带有代码查询参数.现在我正在重定向到localhost,因此重定向URL如下所示:

https://localhost:8080/?code=XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX

这段代码究竟是什么?另外,如何使用它来为我的用户访问AWS资源?

javascript amazon-web-services amazon-cognito aws-sdk aws-cognito

12
推荐指数
3
解决办法
5666
查看次数