You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 22:03:22