Uploading text string or file to S3
(1) Install AWS SDK.
gem 'aws-sdk', '~> 2'
(2) Create an IAM user with S3 full privilege. Get the Access Key ID and Access Key, as well as the region you want to operate in.
s3_region = 'us-east-1' s3_access_key_id = 'XXXXXX' s3_access_key = 'YYYYYY' s3_bucket_name = 'my-test-bucket-123'
(3) Create an AWS client.
client = Aws::S3::Client.new( region: s3_region, credentials: Aws::Credentials.new(s3_access_key_id, s3_access_key) )
(4) Create an S3 object from the client.
object = Aws::S3::Object.new( client: client, bucket_name: s3_bucket_name, key: 'filename' )
(5) Upload a file on disk.
object.upload_file( path/to/file, acl: 'public-read', content_type: 'text/plain', cache_control: 'public, max-age=604800' )
(6) Or upload a text string render dynamically.
object.put( body: content, acl: 'public-read', content_type: 'text/plain', cache_control: 'public, max-age=604800' )
- Check the type of ACL here for the most suitable config.
- Cache-Control is important, especially when working with public accessible files and CDN such as CloudFront.
(7) Get the public URL of the uploaded file.
url = object.public_url # Public URL
(8) If your S3 has CloudFront configured. The URL will be:
url = "#{cloud_front_url}/#{key}"
AI Summary
Chrome On-device AI
2024-11-09 05:49:48
Share Article