AWSSDK for Swift运行时手动配置S3凭证问题求助
为AWS SDK for Swift的S3Client手动配置凭证
要在IDE外运行时手动注入Access Key和Secret Key,你可以通过StaticCredentialsProvider创建自定义凭证提供器,再将其传入S3Client的配置中,替代默认的凭证链。
修改后的代码示例
import Foundation import ClientRuntime import AWSS3 import AWSCredentials // 需确保已引入该模块 func listBucketFiles(bucket: String, accessKey: String, secretKey: String) async throws -> [String] { // 1. 创建包含密钥的凭证实例 let credentials = Credentials( accessKey: accessKey, secret: secretKey ) // 2. 基于凭证创建静态凭证提供器 let credentialsProvider = StaticCredentialsProvider(credentials: credentials) // 3. 配置S3Client,指定区域和自定义凭证提供器 let clientConfig = S3ClientConfiguration( region: "us-east-1", credentialsProvider: credentialsProvider ) // 4. 使用自定义配置初始化S3Client let client = try S3Client(config: clientConfig) let input = ListObjectsV2Input( bucket: bucket ) let output = try await client.listObjectsV2(input: input) var names: [String] = [] guard let objList = output.contents else { return [] } for obj in objList { if let objName = obj.key { names.append(objName) } } self.bucketNames = names return names }
关键说明
StaticCredentialsProvider用于直接传入固定的Access Key和Secret Key,适配需要手动指定凭证的场景- 生产环境中禁止硬编码凭证,建议从环境变量、AWS Secrets Manager或其他安全存储中读取密钥值后传入方法
- 原代码依赖默认凭证链(自动读取Xcode环境变量、本地
~/.aws/credentials文件等),IDE外运行时默认链无法获取凭证,因此需要手动配置
内容的提问来源于stack exchange,提问作者Andrew Treacy
相关产品推荐
相关产品推荐

