当前位置: 首页 > 知识库问答 >
问题:

Java aws sdk-指定的位置约束无效(非Amazon)

柴琦
2023-03-14
s3 = boto3.resource(
   's3',
   endpoint_url='https://my.non-amazon-endpoint.com',
   aws_access_key_id=access_key,
   aws_secret_access_key=secret_key
)

bucket = s3.create_bucket(Bucket="my-bucket") # successfully creates bucket

java中尝试相同的操作会导致异常:

BasicAWSCredentials awsCreds = new BasicAWSCredentials(access_key, secret_key);

AwsClientBuilder.EndpointConfiguration config =
        new AwsClientBuilder.EndpointConfiguration(
                "https://my.non-amazon-endpoint.com",
                "MyRegion");

AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
        .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
        .withEndpointConfiguration(config)
        .build();

List<Bucket> buckets = s3Client.listBuckets();
// this works and lists all containers, hence the connection should be fine
for (Bucket bucket : buckets) {
    System.out.println(bucket.getName() + "\t" +
            StringUtils.fromDate(bucket.getCreationDate()));
}

Bucket bucket = s3Client.createBucket("my-bucket");
// AmazonS3Exception: The specified location-constraint is not valid (Service: Amazon S3; Status Code: 400; Error Code: InvalidLocationConstraint...

我知道几个相关的问题,例如这个问题,但我无法调整建议的解决方案,以适应我的非Amazon存储。

深入研究boto3代码,结果发现,如果没有指定区域,则LocationConstraint被设置为None。但是在java中省略该区域也会导致InvalidLocationConstrain。

亲切的问候

更新

SigningRegion设置为“US-East-1”将启用桶创建功能:

AwsClientBuilder.EndpointConfiguration config =
            new AwsClientBuilder.EndpointConfiguration(
                    "https://my.non-amazon.endpoint.com",
                    "us-east-1");

共有1个答案

华宪
2023-03-14

将signingRegion设置为“US-East-1”可启用桶创建功能:

AwsClientBuilder.EndpointConfiguration config =
        new AwsClientBuilder.EndpointConfiguration(
                "https://my.non-amazon.endpoint.com",
                "us-east-1");

如果分配了另一个区域,sdk将从endpointurl解析该区域,如这里所指定的。

在我的例子中,这会导致一个无效的区域,例如非亚马逊区域。

 类似资料:
  • 安全约束是一种定义 web 内容保护的声明式方式。安全约束关联授权和或在 web 资源上对 HTTP 操作的用户数据约束。安全约束,在部署描述符中由 security-constraint 表示,其包含以下元素: web资源集合 (部署描述符中的 web-resource-collection) 授权约束 (部署描述符中的 auth-constraint) 用户数据约束 (部署描述符中的 user

  • 问题内容: 在MySQL中创建非NULL约束以使fieldA和fieldB不能都为NULL的最佳方法是什么。我不在乎任何一个本身是否为NULL,只要另一个字段具有非NULL值即可。而且,如果它们都具有非NULL值,那就更好了。 问题答案: MySQL 5.5引入了SIGNAL,因此我们不再需要Bill Karwin的答案中的额外列。Bill指出您还需要一个更新触发器,因此我也将其包括在内。

  • 主要内容:在创建表时设置非空约束,在修改表时添加非空约束,删除非空约束MySQL非空约束(NOT NULL)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。可以通过 CREATE TABLE 或 ALTER TABLE 语句实现。在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不能为空。 比如,在用户信息表中,如果不添加用户名,那么这条用户信息就是无效的,这时就可以为用户名字段设置非空约

  • 我尝试使用cbv的im来保存一个对象,我不熟悉使用它,并且我尝试使用create view来保存一个对象,但是得到这个错误: "Not NULL约束失败:forum_question.user_id" 我将不胜感激初学者友好的解释如何解决这个问题,也许还有提示,谢谢! models.py: 表单.py: 视图.py: 例外?: 编辑3: 其他信息: 回溯(最近一次调用最后):文件“/主页/钛/本地

  • 问题内容: 我有一张表,像 该对(FieldID,FormID)应该是唯一的,但只有在不删除该行(isDeleted = 0)的情况下,才可以。 是否可以在SQLServer 2008中定义这样的约束?(不使用触发器) PS设置(FieldID,FormID,isDeleted)是唯一的,增加了将一行标记为已删除的可能性,但是我希望有机会将n行(每个FieldID,FormID)设置为isDele

  • 我想用元素距离约束对组合进行排序和取消排序。选定的元素不能重复。 例如: 元素从中选择 正在选择的元素 2个选择元素之间的最大距离 与约束匹配 与约束不匹配 在给定距离约束下,小于,如何对组合进行排序?有没有一种方法可以在不计算较小秩的组合的情况下进行排序?