aws-sdk-swift-usage

安装量: 507
排名: #6881

安装

npx skills add https://github.com/aws/agent-toolkit-for-aws --skill aws-sdk-swift-usage

AWS SDK for Swift Async Code Structure All SDK operations are async. Use @main entry point: @main struct Main { static func main ( ) async throws { let client = try await S3Client ( ) // ... async operations } } CRITICAL: Use Struct Config Types NEVER use S3ClientConfiguration or DynamoDBClientConfiguration - these are DEPRECATED classes. ALWAYS use the struct-based config types: S3Client.S3ClientConfig (not S3ClientConfiguration) DynamoDBClient.DynamoDBClientConfig (not DynamoDBClientConfiguration) STSClient.STSClientConfig (not STSClientConfiguration) Config parameters MUST be in declaration order. Region is ALWAYS required when creating a config. Check the service client source for exact order. // CORRECT - struct config let config = try await S3Client . S3ClientConfig ( region : "us-west-2" ) let client = S3Client ( config : config ) // WRONG - deprecated class // let config = try await S3Client.S3ClientConfiguration(region: "us-west-2") Client Creation All service clients follow the same pattern: Client with Client.ClientConfig . Model types (structs/enums used in requests/responses) are namespaced under ClientTypes : S3ClientTypes.Bucket , S3ClientTypes.Object DynamoDBClientTypes.AttributeValue CloudWatchClientTypes.MetricDatum , CloudWatchClientTypes.Dimension import AWSS3 import AWSDynamoDB // Simple - auto-detects region let s3 = try await S3Client ( ) let dynamo = try await DynamoDBClient ( ) // With region let s3 = try S3Client ( region : "us-west-2" ) // With config - parameters must be in declaration order let config = try await S3Client . S3ClientConfig ( useFIPS : true , awsRetryMode : . adaptive , maxAttempts : 5 , region : "us-west-2" ) let client = S3Client ( config : config ) // With custom endpoint and credentials let config = try await S3Client . S3ClientConfig ( awsCredentialIdentityResolver : resolver , region : "us-west-2" , endpoint : "https://s3.custom-endpoint.com" ) Common config parameters (MUST follow declaration order): awsCredentialIdentityResolver - Custom credentials useFIPS - Enable FIPS endpoints useDualStack - Enable dual-stack endpoints awsRetryMode - Retry strategy (.adaptive, .standard, .legacy) maxAttempts - Max retry attempts region - AWS region httpClientEngine - Custom HTTP client (requires HttpClientConfiguration parameter): import ClientRuntime let httpConfig = HttpClientConfiguration ( ) let httpClient = URLSessionHTTPClient ( httpClientConfiguration : httpConfig ) let config = try await S3Client . S3ClientConfig ( region : "us-east-1" , httpClientEngine : httpClient ) endpoint - Custom endpoint URL For service-specific config options or exact parameter order, check Sources/Services/AWS/Sources/AWS/Client.swift in the SDK. Credential Resolvers import AWSSDKIdentity import SmithyIdentity // Static credentials - pass credential object directly let creds = AWSCredentialIdentity ( accessKey : "AKIA..." , secret : "..." ) let resolver = StaticAWSCredentialIdentityResolver ( creds ) // Assume role - REQUIRES underlying resolver let underlying = try DefaultAWSCredentialIdentityResolverChain ( ) let resolver = try STSAssumeRoleAWSCredentialIdentityResolver ( awsCredentialIdentityResolver : underlying , roleArn : "arn:aws:iam::123456789012:role/MyRole" , sessionName : "session-name" ) // Use in config let config = try await S3Client . S3ClientConfig ( awsCredentialIdentityResolver : resolver , region : "us-west-2" ) Waiters Import SmithyWaitersAPI . WaiterOptions requires maxWaitTime parameter: import AWSS3 import SmithyWaitersAPI let client = try await S3Client ( ) _ = try await client . waitUntilBucketExists ( options : WaiterOptions ( maxWaitTime : 120.0 ) , input : HeadBucketInput ( bucket : "my-bucket" ) ) Pagination let input = ListObjectsV2Input ( bucket : "my-bucket" ) for try await page in client . listObjectsV2Paginated ( input : input ) { for object in page . contents ?? [ ] { print ( object . key ?? "" ) } } Presigned URLs let url = try await client . presignedURLForGetObject ( input : GetObjectInput ( bucket : "my-bucket" , key : "file.pdf" ) , expiration : 3600 ) Common Operations // Put object _ = try await client . putObject ( input : PutObjectInput ( body : . data ( data ) , bucket : "bucket" , key : "key" ) ) // Get object let output = try await client . getObject ( input : GetObjectInput ( bucket : "bucket" , key : "key" ) ) let data = try await output . body ? . readData ( ) // List buckets let response = try await client . listBuckets ( input : ListBucketsInput ( ) ) for bucket in response . buckets ?? [ ] { print ( bucket . name ?? "" ) }

返回排行榜