terraform中base64编码的md5哈希?

时间:2019-10-18 02:04:01

标签: google-cloud-storage terraform terraform-provider-gcp

有没有办法在Terraform中进行base64编码的md5哈希?据我所知,terraform只对原始字符串进行md5和base64编码。

用例是,我有一个正在以terraform创建的google云存储对象,但是它说“ detectmd5hash”属性每次都已更改,即使它没有。

    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        notificationsViewModel =
                ViewModelProviders.of(this).get(NotificationsViewModel.class);
        View root = inflater.inflate(R.layout.fragment_notifications, container, false);
        final TextView textView = root.findViewById(R.id.text_notifications);
        notificationsViewModel.getText().observe(this, new Observer<String>() {
            @Override
            public void onChanged(@Nullable String s) {
                textView.setText(s);
            }
        });


        bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
        MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

        final View rootView = inflater.inflate(R.layout.fragment_notifications, container);
        outputText = (TextView) rootView.findViewById(R.id.outputTextView);
        inputEditText = (EditText) rootView.findViewById(R.id.inputEditText);
        sendBtn = (Button) rootView.findViewById(R.id.sendBtn); 
        final Button searchBtn = (Button) rootView.findViewById(R.id.searchBtn);

        searchBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                outputText.setText("pressed");
                inputEditText.setText("pressed");
                findDevice();
            }
        });

我希望我可以做类似的事情:

resource "google_storage_bucket_object" "things" {
  name    = "my-things"
  bucket  = "my-google-cloud-storage-bucket"
  content = "${local.thing_two}\n${local.thing_one}"
}

但这采用的是实际十六进制字符串的base64编码,而不是十六进制表示的字节-因此它与google存储的对象的实际md5不匹配(以十六进制返回md5)。

有没有解决方法或聪明的解决方案?

1 个答案:

答案 0 :(得分:1)

我们在AWS S3上遇到了类似的问题,我们通过以下方法解决了这个问题:

  • 设置用于计算文件哈希值的gulp管道

  • 将该哈希存储在.txt文件中(使用与原始文件相同的名称)

  • 上传文件和哈希.txt文件

  • 然后在.txt文件上使用base64encode进行版本控制

这工作了一段时间,但是最终我们选择使用S3内置对象版本控制,因为它很容易。

我没有在Google上使用terraform,所以不确定是否有帮助,但是随时问我更多的问题。