标签: aws-sdk

如何从boto获取当前用户的区域?

问题:

我正在尝试从boto3获取经过身份验证的用户的区域.

使用案例:

我正在努力将缓存添加到https://github.com/pmazurek/aws-fuzzy-finder.我更愿意按区域缓存结果.

该软件包使用boto获取用户身份验证数据(密钥和区域).问题是该区域永远不会被用户明确传递,它是从boto读取的许多阴暗的地方之一中获取的,所以我真的没办法得到它.

我试过搜索boto3 api和谷歌搜索,但找不到任何像一个get_regionget_user_data方法.可能吗?

python amazon-ec2 boto amazon-web-services aws-sdk

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

查询dynamodb Local中的全局二级索引

我正在使用这些参数在DynamoDB中创建一个表和GSI,根据文档:

configId是表的主键,我使用它publisherId作为GSI的主键.(为简洁起见,我删除了一些不必要的配置参数)

var params = {
    TableName: 'Configs',
    KeySchema: [ 
        {
            AttributeName: 'configId',
            KeyType: 'HASH',
        }
    ],
    AttributeDefinitions: [
        {
            AttributeName: 'configId',
            AttributeType: 'S',
        },
        {
            AttributeName: 'publisherId',
            AttributeType: 'S',
        }
    ],
    GlobalSecondaryIndexes: [ 
        { 
            IndexName: 'publisher_index', 
            KeySchema: [
                {
                    AttributeName: 'publisherId',
                    KeyType: 'HASH',
                }
            ]
        }
    ]
};
Run Code Online (Sandbox Code Playgroud)

我用这个查询这个表:

{ TableName: 'Configs',
  IndexName: 'publisher_index',
  KeyConditionExpression: 'publisherId = :pub_id',
  ExpressionAttributeValues: { ':pub_id': { S: '700' } } }
Run Code Online (Sandbox Code Playgroud)

但我一直收到错误:

"ValidationException:一个或多个参数值无效:条件参数类型与模式类型不匹配"

在文档中,它指定主要KeyType可以是HASHRANGE,并且您 …

node.js amazon-dynamodb aws-sdk

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

尝试使用KMS解密Lambda函数中的密文会导致超时

使用AWS CLI从命令行解密密文时,密文会被解密而不会出现问题:

$ aws kms decrypt --ciphertext-blob fileb://encrypted-secrets --output text --query Plaintext --region us-east-1 | base64 --decode > decryped-secrets
Run Code Online (Sandbox Code Playgroud)

当尝试从js脚本执行此操作时,此解密操作也在本地工作:

#!/usr/local/bin/node

const fs = require('fs');
const AWS = require('aws-sdk');
const kms = new AWS.KMS({region:'us-east-1'});

const secretPath = './encrypted-secrets';
const encryptedSecret = fs.readFileSync(secretPath);

const params = {
      CiphertextBlob: encryptedSecret
};

kms.decrypt(params, function(err, data) {
  if (err) {
    console.log(err, err.stack);
  } else {
    const decryptedScret = data['Plaintext'].toString();
    console.log('decrypted secret', decryptedScret);
  }
});
Run Code Online (Sandbox Code Playgroud)

但是,当在AWS Lambda函数的上下文中尝试使用与上述几乎完全相同的代码时,调用该函数会导致超时:

'use strict';

const zlib = require('zlib');
const mysql …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-sdk aws-lambda aws-kms aws-sdk-nodejs

23
推荐指数
2
解决办法
7168
查看次数

Aws S3按标签过滤.按标签搜索

我们在AWS S3上使用了新的Aws SDK API.我们上传并标记了许多带标签的文件和文件夹.

我们如何过滤键值标签,或只过滤其中一个?我想找到key ="temp",或key ="temp"和value ="lol"的所有对象.

谢谢!

tags search amazon-s3 aws-sdk

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

com包中com.amazonaws.services.lambda.runtime在AWS java sdk 1.10.2中不存在

我正在尝试使用入门( Java中的AWS Lambda代码编写)页面中的Java代码示例,但我被困为com.amazonaws.services.lambda.runtime pacakge似乎缺失了

以下是示例代码:

package example;

import com.amazonaws.services.lambda.runtime.Context;      //package does not exist error
import com.amazonaws.services.lambda.runtime.LambdaLogger; // package does not exist error
import com.amazonaws.services.s3.AmazonS3;       // import works (not needed, I've put them in for testing import)
import com.amazonaws.services.s3.model.S3Object; // import works (not needed, I've put them in for testing import)

public class Hello {
    public String myHandler(int myCount, Context context) {
        LambdaLogger logger = context.getLogger();
        logger.log("received : " + myCount);
        return String.valueOf(myCount);
    }
}
Run Code Online (Sandbox Code Playgroud)

我在Netbeans中通过命令行(指定aws …

java aws-sdk aws-lambda aws-java-sdk

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

无法从Amazon S3下载具有特殊字符的文件

我一直在尝试从Amazon S3下载一个以特殊字符结尾的文件. 在此输入图像描述

作为Base64编码的结果,文件名以"="结尾.现在我正在尝试下载此文件,但收到错误,

指定的密钥不存在.(服务:Amazon S3;状态代码:404;错误代码:NoSuchKey;

在此输入图像描述

我尝试了URL编码字符串.所以现在"="变为"%3D",但仍然收到相同的错误.但是,如果我从文件名中删除"=",我可以毫无问题地下载文件.但这是一个常见的文件,也可以从iOS访问.

注意:即使文件名中包含"=",iOS Amazon SDK也能正常工作.该问题仅在Android SDK中面临.

android amazon-s3 aws-sdk

22
推荐指数
2
解决办法
1480
查看次数

自定义属性未传递到 AWS Cognito 创建的 ID_TOKEN

用户成功登录后,我无法从 AWS Cognito 返回的ID_TOKEN 中获取自定义属性

我试过的步骤:

1.创建用户池 2.创建应用客户端并检查自定义属性(customattrib1,customattrib2

用户池屏幕:

在此处输入图片说明

检查应用程序客户端配置中的自定义属性

在此处输入图片说明

3.使用admin-create-user api创建用户

下图显示了用户属性的值:

在此处输入图片说明

4.在客户端应用程序中使用 aws-cognito-auth.js 登录的用户。返回的 ID 令牌不包含自定义属性。

ID_TOKEN

{
  "at_hash": "PKfjYDaiEty5mUOyJZlPQA",
  "sub": "639d5016-2bd3-4c6f-b82d-21ae38071b09",
  "email_verified": true,
  "iss": "https://cognito-idp.ap-south-1.amazonaws.com/ap-south-1_XXXXXXX",
  "phone_number_verified": true,
  "cognito:username": "testuser",
  "aud": "XYXYXYXYX",
  "token_use": "id",
  "auth_time": 1549349674,
  "phone_number": "##########",
  "exp": 1549353274,
  "iat": 1549349674,
  "email": "testuser@somedomain.com"
}
Run Code Online (Sandbox Code Playgroud)

我已经检查了下面的链接,其中包含有关此问题的一些信息,但到目前为止没有任何帮助。

在池创建后添加 Cognito 自定义属性?

如果用户池配置了 SAML 身份提供者,则 Cognito 用户池自定义属性不会显示在 ID 令牌中

如果用户池配置了 SAML 身份提供者,则 Cognito 用户池自定义属性不会显示在 ID 令牌中

https://www.reddit.com/r/aws/comments/a07dwg/cognito_add_custom_attribute_to_jwt_token/

请帮我弄清楚我是否遗漏了什么..

amazon-web-services openid-connect amazon-cognito aws-sdk aws-userpools

22
推荐指数
2
解决办法
7343
查看次数

按日期从Spark中读取S3中的多个文件

描述

我有一个应用程序,它将数据发送到AWS Kinesis Firehose,并将数据写入我的S3存储桶.Firehose使用"yyyy/MM/dd/HH"格式来编写文件.

就像在这个示例S3路径中一样:

s3://mybucket/2016/07/29/12
Run Code Online (Sandbox Code Playgroud)

现在我有一个用Scala编写的Spark应用程序,我需要从特定时间段读取数据.我有开始和结束日期.数据采用JSON格式,这就是我sqlContext.read.json()不使用的原因sc.textFile().

如何快速有效地读取数据?

我试过了什么?

  1. 通配符 - 我可以选择特定日期或特定月份所有日期的所有小时数据,例如:

    val df = sqlContext.read.json("s3://mybucket/2016/07/29/*")
    val df = sqlContext.read.json("s3://mybucket/2016/07/*/*")
    
    Run Code Online (Sandbox Code Playgroud)

    但是,如果我必须从几天的日期读取数据,例如2016-07-29 - 2016-07-30我不能以相同的方式使用通配符方法.

    这让我想到了下一点......

  2. 解决方案中使用samthebest提供的多个路径或CSV目录.似乎用逗号分隔目录只能使用和不使用.sc.textFile()sqlContext.read.json()
  3. 联盟 - 的前一个链接的第二个解决方案建议分别读取每个目录,然后将它们合并在一起.虽然他建议联合RDD-s,但也可以选择联合DataFrames.如果我手动生成给定日期时间段的日期字符串,那么我可能会创建一个不存在的路径,而不是忽略它,整个读取失败.相反,我可以使用AWS SDK并使用listObjectsAmazonS3Client中的函数来获取上一个链接中iMKanchwala解决方案中的所有密钥.

    唯一的问题是我的数据不断变化.如果read.json()函数将所有数据作为单个参数获取,它将读取所有必需的数据,并且足够智能从数据中推断出json模式.如果我分别读取2个目录并且它们的模式不匹配,那么我认为联合这两个数据帧会成为一个问题.

  4. Glob(?)语法 - nhahtdh的这个解决方案比选项12好一点,因为它们提供了更详细地指定日期和目录的选项,并作为单个"路径",因此它也适用于.read.json()

    但同样,关于丢失的目录会出现一个熟悉的问题.假设我想要从20.07到30.07的所有数据,我可以这样声明:

    val df = sqlContext.read.json("s3://mybucket/2016/07/[20-30]/*")
    
    Run Code Online (Sandbox Code Playgroud)

    但是,如果我从7月25日开始丢失数据,那么路径..16/07/25/就不存在了,整个功能都失败了.

显然,当请求的时间段是25.11.2015-12.02.2016时,它会变得更加困难,那么我需要以编程方式(在我的Scala脚本中)创建一个类似这样的字符串路径:

"s3://mybucket/{2015/11/[25-30],2015/12/*,2016/01/*,2016/02/[01-12]}/*"
Run Code Online (Sandbox Code Playgroud)

通过创建它,我会以某种方式确定这些25-30和01-12间隔都有相应的路径,如果缺少一个,它会再次失败.(幸运的是,Asterisk会处理丢失的目录,因为它会读取存在的所有内容)

如何从一个目录路径中一次性读取所有必要的数据,而不会因为某个日期间隔之间缺少目录而失败?

scala amazon-s3 apache-spark apache-spark-sql aws-sdk

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

如何访问Cognito用户帐户的组?

在AWS Cognito中,您可以将用户添加到组(首次创建组之后).用户可以属于一个或多个组.

使用JavaScipt SDK(https://github.com/aws/amazon-cognito-identity-js),有没有办法读取分配的组?会aws-sdk提供访问权限amazon-cognito-identity-js吗?

amazon-cognito aws-sdk aws-cognito

21
推荐指数
4
解决办法
1万
查看次数

未配置RegionEndpoint或ServiceURL

我正在编写代码以将文件上传到AWS S3并收到此异常:

AmazonClientException:未配置RegionEndpoint或ServiceURL

我的代码:

Console.WriteLine("ready to upload");
AWSCredentials credentials;
credentials = new BasicAWSCredentials(accessKeyID.Trim(), secretKey.Trim());
AmazonS3Client s3Client = new AmazonS3Client(accessKeyID.Trim(), secretKey.Trim(), Amazon.RegionEndpoint.USEast1);
Console.WriteLine("Successful verification");
Console.WriteLine("Check if the bucket exists");
if (!CheckBucketExists(s3Client, bucketName))
{
    s3Client.PutBucket(bucketName);
    Console.WriteLine("create bucket");
}
TransferUtility utility = new TransferUtility();
Console.WriteLine("Upload  Directory......");
//exception here
utility.UploadDirectory(@"E:\telerikFile\13ginabdfglil.com", bucketName);
Run Code Online (Sandbox Code Playgroud)

例外:

Amazon.Runtime.AmazonClientException: No RegionEndpoint or ServiceURL configured
  Amazon.Runtime.ClientConfig.Validate()
  Amazon.S3.AmazonS3Config.Validate()
  Amazon.Runtime.AmazonServiceClient..ctor(AWSCredentials credentials, ClientConfig config)
  Amazon.S3.AmazonS3Client..ctor()
  Amazon.S3.Transfer.TransferUtility..ctor()
  Telerik2Amazon.Program.UploadFile()
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

.net amazon-s3 amazon-web-services aws-sdk aws-sdk-net

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