2017-02-20 14 views
3

AWSS3に奇妙な問題があります。AWSS3地域/ plist設定の問題 'サービス設定がnil`

セットアップ:

  • AWSモバイルHUB
  • Cognito
  • DynamoDBの
  • S3

- > Cognito、ダイナモ&もS3(cognitoを介してユーザデータ)ワーク。私はAWS MobielのHUBからダウンロードplistの設定を使用しています

AWSiOSSDK v2.5.1 [Debug] AWSInfo.m line:122 | -[AWSServiceInfo initWithInfoDictionary:checkRegion:] | Couldn't read the region configuration from Info.plist for the client. Please check your `Info.plist` if you are providing the SDK configuration values through `Info.plist`. 
2017-02-20 19:29:21.748997 [2210:1152801] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'The service configuration is `nil`. You need to configure `Info.plist` or set `defaultServiceConfiguration` before using this method.' 

:「

let transferManager = AWSS3TransferManager.default() 
          let uploadRequest = AWSS3TransferManagerUploadRequest() 
          uploadRequest?.bucket = "XXXXXXXXXXXX" 
          uploadRequest?.key = "user-data/" + awsId! + "/primary_profile_picture.png" 
          uploadRequest?.body = imgUrl as URL 

          transferManager.upload(uploadRequest!).continueWith(executor: AWSExecutor.mainThread(), block: { (task:AWSTask<AnyObject>) -> Any? in 

           if let error = task.error as? NSError { 
            if error.domain == AWSS3TransferManagerErrorDomain, let code = AWSS3TransferManagerErrorType(rawValue: error.code) { 
             switch code { 
             case .cancelled, .paused: 
              break 
             default: 
              print("Error uploading: \(uploadRequest?.key) Error: \(error)") 
             } 
            } else { 
             print("Error uploading: \(uploadRequest?.key) Error: \(error)") 
            } 
            return nil 
           } 

           let uploadOutput = task.result 
           print("Upload complete for: \(uploadRequest?.key)") 
           return nil 
          }) 

し、エラーを取得しています:私は今、次のコードでAWS3に直接接続しようとしたが

それ以外のすべてのコンポーネントと同じように動作しないことに少し驚いています。

plistには実際にbuckeが含まれていますt ID &地域。

答えて

4

info.plistにはS3TransferManagerが必要です。あなたは私はあなたが私にとってDynamoDBObjectMapper

など。

<key>DynamoDBObjectMapper</key> 
    <dict> 
     <key>Default</key> 
     <dict> 
      <key>Region</key> 
      <string>us-east-1</string> 
     </dict> 
    </dict> 
+0

完璧、ありがとう:)アップロードはまだ動作しませんが、少なくとも新しい問題:P –

+0

私はこの同じ問題を抱えていますが、解決方法を見つけることができませんでした。 –

1

の例を見つけることができます**AWS -> S3TransferManager -> Default -> Region -> ...**

ので、アップロードする前に次のコードを一度呼び出す必要がありました:

let credentialsProvider = AWSCognitoCredentialsProvider(regionType:.USEast1,identityPoolId:PoolID) 
let configuration = AWSServiceConfiguration(region:.USEast1, credentialsProvider:credentialsProvider) 

AWSServiceManager.default().defaultServiceConfiguration = configuration 

ここで、PoolIDは自分のCognito IDです。私はこれが他人を助けることを望む。

2

を置く必要がある代わりにS3TransferManagerの同じ問題を持っていた1 here

1

スウィフト3 - まだこの問題を持つ人々のためのXcode 8.3.3

、私はこの迷惑なセットアップの問題に対する3時間の戦いを過ごしました。

これらのチャンクをInfo.plistに追加しました(2番目のブロックで** **の間の変数を置き換えてください)。

Amazonのマニュアルが正しく更新されないと思います。私はこれがいくつかの人々をいくつかの時間を節約することができることを望む

<key>NSAppTransportSecurity</key> 
    <dict> 
     <key>NSAllowsArbitraryLoads</key> 
     <true/> 
     <key>NSExceptionDomains</key> 
     <dict> 
      <key>amazonaws.com</key> 
      <dict> 
       <key>NSThirdPartyExceptionMinimumTLSVersion</key> 
       <string>TLSv1.0</string> 
       <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> 
       <false/> 
       <key>NSIncludesSubdomains</key> 
       <true/> 
      </dict> 
      <key>amazonaws.com.cn</key> 
      <dict> 
       <key>NSThirdPartyExceptionMinimumTLSVersion</key> 
       <string>TLSv1.0</string> 
       <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> 
       <false/> 
       <key>NSIncludesSubdomains</key> 
       <true/> 
      </dict> 
     </dict> 
    </dict> 

と:問題があった

<key>AWS</key> 
    <dict> 
     <key>CredentialsProvider</key> 
     <dict> 
      <key>CognitoIdentity</key> 
      <dict> 
       <key>Default</key> 
       <dict> 
        <key>PoolId</key> 
        <string>**YourCognitoIdentityPoolId**</string> 
        <key>Region</key> 
        <string>**AWSRegionUnknown**</string> 
       </dict> 
      </dict> 
     </dict> 
     <key>S3TransferManager</key> 
     <dict> 
      <key>Default</key> 
      <dict> 
       <key>Region</key> 
       <string>**AWSRegionUnknown**</string> 
      </dict> 
     </dict> 
    </dict> 
1

、領域がなければならない:

us-east-1 

の代わりに、 US_EAST_1