terraform-provider-stackitp.../docs/guides/aws_provider_s3_stackit.md
2025-11-25 15:16:51 +00:00

2.6 KiB

page_title
Using AWS Provider for STACKIT Object Storage (S3 compatible)

Using AWS Provider for STACKIT Object Storage (S3 compatible)

Overview

This guide outlines the process of utilizing the AWS Terraform Provider alongside the STACKIT provider to create and manage STACKIT Object Storage (S3 compatible) resources.

Steps

  1. Configure STACKIT Provider

    First, configure the STACKIT provider to connect to the STACKIT services.

    provider "stackit" {
      default_region = "eu01"
    }
    
  2. Define STACKIT Object Storage Bucket

    Create a STACKIT Object Storage Bucket and obtain credentials for the AWS provider.

    resource "stackit_objectstorage_bucket" "example" {
      project_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
      name       = "example"
    }
    
    resource "stackit_objectstorage_credentials_group" "example" {
      project_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
      name       = "example-credentials-group"
    }
    
    resource "stackit_objectstorage_credential" "example" {
      project_id           = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
      credentials_group_id = stackit_objectstorage_credentials_group.example.credentials_group_id
      expiration_timestamp = "2027-01-02T03:04:05Z"
    }
    
  3. Configure AWS Provider

    Configure the AWS provider to connect to the STACKIT Object Storage bucket.

    provider "aws" {
      region                      = "eu01"
      skip_credentials_validation = true
      skip_region_validation      = true
      skip_requesting_account_id  = true
    
      access_key                  = stackit_objectstorage_credential.example.access_key
      secret_key                  = stackit_objectstorage_credential.example.secret_access_key
    
      endpoints {
        s3 = "https://object.storage.eu01.onstackit.cloud"
      }
    }
    
  4. Use the Provider to Manage Objects or Policies

    resource "aws_s3_object" "test_file" {
      bucket       = stackit_objectstorage_bucket.example.name
      key          = "hello_world.txt"
      source       = "files/hello_world.txt"
      content_type = "text/plain"
      etag         = filemd5("files/hello_world.txt")
    }
    
    resource "aws_s3_bucket_policy" "allow_public_read_access" {
      bucket = stackit_objectstorage_bucket.example.name
      policy = <<EOF
      {
        "Statement": [
          {
            "Sid": "Public GET",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "urn:sgws:s3:::example/*"
          }
        ]
      }
      EOF
    }