Skip to main content

Troubleshooting

Iact3 cannot find a template

If the config does not specify template_config, Iact3 searches the project root for files ending with:

  • .template.json
  • .template.yaml
  • .template.yml

If none are found, it searches for Terraform .tf files. Pass -t or set template_config.template_location when the template is elsewhere.

A test creates too many stacks

Every test name is multiplied by every resolved region. Check inherited regions values in general, project, and each tests entry.

Use --test-names and -r while debugging:

iact3 test run --test-names default -r cn-hangzhou

Failed stacks were deleted before inspection

Run with:

iact3 test run --keep-failed

Use --no-delete only when you intentionally want to keep all stacks.

Cleanup misses a stack

Iact3 cleanup relies on the tags it adds to stacks. If tags were removed or a stack was not created by Iact3, use the ROS console or pass the explicit stack ID:

iact3 test clean -r cn-hangzhou --stack-id <stack-id>

Credentials are not picked up

Verify the selected Aliyun CLI profile and config path:

iact3 --profile default validate -t template.yml

If you use environment variables, ensure both ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET are set in the shell or CI job that runs Iact3.

Pseudo parameters do not resolve

$[iact3-auto] depends on ROS parameter constraints or name-based conventions. If a parameter has a custom name, provide an explicit value in parameters.

For VSwitch selection, include a zone parameter when the template needs a VSwitch in a specific zone.

A hook failed

Hook stdout or stderr is written under the output directory. Re-run the command outside Iact3 with the same arguments when the report shows a hook failure.

Keep in mind that stack outputs are only available to post-create and pre-delete phases after the stack has produced outputs.