草庐IT

java - 以编程方式在 AWS S3 上启用版本控制

coder 2024-01-24 原文

我在使用 AWS SDK iOS v2.1.1 以编程方式启用现有存储桶的版本控制时遇到问题。错误是 -[NSNull _fastCharacterContents]: unrecognized selector sent to instance ...。我的代码片段创建了执行 putBucketVersioning 方法的错误结果:

    AWSS3VersioningConfiguration *conf = [AWSS3VersioningConfiguration new];
    conf.status = AWSS3BucketVersioningStatusEnabled;

    AWSS3PutBucketVersioningRequest *versionRequest = [AWSS3PutBucketVersioningRequest new];
    versionRequest.bucket = createBucketReq.bucket;
    versionRequest.versioningConfiguration = conf;

    [[[AWSS3 S3ForKey:key] putBucketVersioning:versionRequest] continueWithBlock:^id(BFTask *task) {

        return task;
}

关于如何创建 AWSS3PutBucketVersioningRequest 请求,我可能遗漏了一个论点,但我找不到任何示例或文档可以为我指明正确的方向。非常欢迎任何关于 Java、Cocoa 或 Swift 的建议。干杯,特隆

更新:

根据评论,我在启用 AWSLogging verbose 后包括了完整的方法和错误输出。

-(BFTask*) enableVersioningOfBucket:(NSString*)bucket region:(NSInteger) region {

    [self setupCredentialsForRegion:region];
    NSString *key = [NSString stringWithFormat:@"regionkey%li",region];

    AWSS3VersioningConfiguration *conf = [AWSS3VersioningConfiguration new];
    conf.status = AWSS3BucketVersioningStatusEnabled;

    AWSS3PutBucketVersioningRequest *versionRequest =  [AWSS3PutBucketVersioningRequest new];
    versionRequest.bucket = bucket;
    versionRequest.versioningConfiguration = conf;
    NSLog(@"Config %@",versionRequest);

   return [[[AWSS3 S3ForKey:key] putBucketVersioning:versionRequest] continueWithBlock:^id(BFTask *task) {
        NSLog(@"Put bucket versioning %@ - %@", task, task.result);
        return task;
    }];
} 

日志消息:

    2015-06-06 12:09:41.822 connectS3[50137:6337899] Config <AWSS3PutBucketVersioningRequest: 0x600000082350> {
    bucket = testbucket;
    versioningConfiguration = "<AWSS3VersioningConfiguration: 0x600000024bc0> {\n    MFADelete = 0;\n    status = 1;\n}";}
    2015-06-06 12:09:41.832 connectS3[50137:6337899] -[NSNull _fastCharacterContents]: unrecognized selector sent to instance 0x7fff7724c210

更新 2

下图显示了当我使用断点并进入每个方法调用时错误消息刚刚出现时的堆栈跟踪。

更新 3 我如下所述设置我的凭据。除了启用版本控制之外,这适用于我连接 S3 的所有其他方法。

        AWSStaticCredentialsProvider *credentialsProvider = [[AWSStaticCredentialsProvider alloc ]
                                                           initWithAccessKey:keychainStore[ACCESS_KEY_ID]
                                                             secretKey:keychainStore[SECRET_KEY]];

        AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:region
                                                           credentialsProvider:credentialsProvider];

        /* One credential configuration for each region **/
        NSString *key = [NSString stringWithFormat:@"regionkey%li",region];
        [AWSS3 registerS3WithConfiguration:configuration forKey:key];

        /* Default credentialsProvider **/
        [AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;

感谢您的帮助!

最佳答案

我可以确认这是当前 AWS Mobile SDK 中的错误。我们将在未来的版本中修复它。感谢您的报告。

要解决此问题,您可以将以下行添加到您的 AWSS3VersioningConfiguration 代码中:

AWSS3VersioningConfiguration *conf = [AWSS3VersioningConfiguration new];
    conf.status = AWSS3BucketVersioningStatusEnabled;
    conf.MFADelete = AWSS3MFADeleteDisabled; // <------ Add this line
...

关于java - 以编程方式在 AWS S3 上启用版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30677529/

有关java - 以编程方式在 AWS S3 上启用版本控制的更多相关文章

  1. ruby - 如何以所有可能的方式将字符串拆分为长度最多为 3 的连续子字符串? - 2

    我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. Ruby Readline 在向上箭头上使控制台崩溃 - 2

    当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby​​安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少

  4. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  5. java - 等价于 Java 中的 Ruby Hash - 2

    我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

  6. ruby-on-rails - 带 Spring 锁的 Rails 4 控制台 - 2

    我正在使用Ruby2.1.1和Rails4.1.0.rc1。当执行railsc时,它被锁定了。使用Ctrl-C停止,我得到以下错误日志:~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`gets':Interruptfrom~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`verify_server_version'from~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.

  7. ruby-on-rails - 在 ruby​​ .gemspec 文件中,如何指定依赖项的多个版本? - 2

    我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这

  8. ruby-on-rails - openshift 上的 rails 控制台 - 2

    我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

  9. ruby-on-rails - 如果我将 ruby​​ 版本 2.5.1 与 rails 版本 2.3.18 一起使用会怎样? - 2

    如果我使用ruby​​版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby​​1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更

  10. ruby-on-rails - 正确的 Rails 2.1 做事方式 - 2

    question的一些答案关于redirect_to让我想到了其他一些问题。基本上,我正在使用Rails2.1编写博客应用程序。我一直在尝试自己完成大部分工作(因为我对Rails有所了解),但在需要时会引用Internet上的教程和引用资料。我设法让一个简单的博客正常运行,然后我尝试添加评论。靠我自己,我设法让它进入了可以从script/console添加评论的阶段,但我无法让表单正常工作。我遵循的其中一个教程建议在帖子Controller中创建一个“评论”操作,以添加评论。我的问题是:这是“标准”方式吗?我的另一个问题的答案之一似乎暗示应该有一个CommentsController参

随机推荐