Это значение не содержит ошибок атрибутов при попытке использовать учетные данные COS HMAC в Terraform?

#amazon-s3 #terraform #ibm-cloud #cloud-object-storage #terraform-provider-ibm

#amazon-s3 #terraform #ibm-cloud #cloud-object-storage #terraform-provider-ibm

Вопрос:

Я пытаюсь использовать учетные данные HMAC для облачного хранилища объектов / S3 в Terraform, но вижу эту ошибку.

 Error: Unsupported attribute

  on main.tf line 56, in resource "ibm_cos_bucket" "sink_bucket":
  56:       ACCESS_KEY               = ibm_resource_key.cos_key.credentials.cos_hmac_keys.access_key_id

This value does not have any attributes.


Error: Unsupported attribute

  on main.tf line 57, in resource "ibm_cos_bucket" "sink_bucket":
  57:       SECRET_ACCESS_KEY        = ibm_resource_key.cos_key.credentials.cos_hmac_keys.secret_access_key

This value does not have any attributes.
  

Я сгенерировал учетные данные COS HMAC HMAC=true , установив при создании cos_key

 resource ibm_resource_key cos_key {
  name                 = "${var.basename}-cos-key"
  resource_instance_id = ibm_resource_instance.cos.id
  role                 = "Writer"

  parameters = {
    service-endpoints = "private"
    HMAC = true
  }
}
  

Когда я проверяю terraform.tstate файл, я вижу учетные данные, как показано ниже

 "cos_key": {
      "value": {
        "credentials": {
          "apikey": "muydB9TyqWr9_aCmFlSRSu-JG3J3PPzXcxxxxxxx",
          "cos_hmac_keys.access_key_id": "e0892b46cfe1411cxxxxxx0",
          "cos_hmac_keys.secret_access_key": "8520aca8680e3e930f74a8869xxxxxx8a27a6",
          ...
          }
        }
      }
  

Ответ №1:

Это то, что сработало для меня

 provisioner "local-exec" {
    command = "echo 'Credentials for MINIO client...'"
    environment = {
      ACCESS_KEY               = ibm_resource_key.cos_key.credentials["cos_hmac_keys.access_key_id"]
      SECRET_ACCESS_KEY        = ibm_resource_key.cos_key.credentials["cos_hmac_keys.secret_access_key"]
      COS_REGION               = var.region
      COS_BUCKET_NAME          = ibm_cos_bucket.sink_bucket.bucket_name
    }
  }
  

Проблема здесь в пользовательских свойствах json, которые включают точки (.), подобные cos_hmac_keys.access_key_id . Terraform выдает ошибку, пока вы не используете приведенную ниже запись

 credentials["cos_hmac_keys.access_key_id"]