I created an AWS Systems Manager Distributor package in one AWS account that will install an application on Windows, Ubuntu, Amazon Linux, or Redhat. The manifest and associated packages are stored in an S3 bucket owned by the same account. I modified the permissions of the bucket to allow read access from my other AWS accounts.
I logged in to a secondary AWS account with EC2 instances I want to install the application on using the distributor package. I created a new distributor package by pointing it to the S3 bucket in the other account. The package is created and the software is installed successfully on all 4 instance types mentioned above during my testing.
Now, the problem. I log back in to the AWS account with the original Distributor package and I share it with the other AWS account that has the EC2 instances. I log back in to the other AWS account with EC2 instances, I find the shared distributor package, and I again run it on some instances. This time, it works on all instance types EXCEPT for the Amazon Linux systems. Now, I get
failed to find platform: no manifest found for platform: amazon, version 2, architecture x86_64.
Yet, above, I already used this exact same manifest/package to install. The only difference is that it is now shared from another account instead of directly created in the account.
Why does the distributor package work when I add it directly in to another AWS account, but fail to work only on Amazon Linux instances, when I share it across accounts?
This is my manifest:
{
"schemaVersion": "2.0",
"version": "Auto-Generated-1639173022560",
"packages": {
"windows": {
"_any": {
"_any": {
"file": "redcloak-2.8.4.0.msi.zip"
}
}
},
"ubuntu": {
"_any": {
"_any": {
"file": "redcloak-1.2.15.0.deb.zip"
}
}
},
"redhat": {
"_any": {
"_any": {
"file": "redcloak-1.2.15.0-0.x86_64.rpm.zip"
}
}
},
"amazon": {
"_any": {
"_any": {
"file": "redcloak-1.2.15.0-0.x86_64.rpm.zip"
}
}
}
},
"files": {
"redcloak-2.8.4.0.msi.zip": {
"checksums": {
"sha256": "90d6c7e2a37be8da08010763a913644861d1e1e606fb31fad2f5cd3a73ec6d39"
}
},
"redcloak-1.2.15.0.deb.zip": {
"checksums": {
"sha256": "6cfbc2731116ae5c07221f2978c19b80829da7c8fa66cffbe1c9c466ece1e135"
}
},
"redcloak-1.2.15.0-0.x86_64.rpm.zip": {
"checksums": {
"sha256": "db01f0fcd624512c9c873893518b83238d1f56c4b948ad4e1bf901d6022fa0ef"
}
}
}
}
I realized that I had manually updated the package files stored in S3, including the manifest, after I had created the Distributor Package in the source AWS account.
So, when I directly added the package from the S3 bucket in the secondary AWS account, the distributor package was utilizing the proper manifest and package files. However, the distributor package shared from the original account was still using older manifest / package files. I simply had to add a new version to the distributor package, utilizing the current manifest/package files and it started working.
I mistakenly thought that if I modified the files directly in S3 it would be used by the distributor package the next time the package was run. However, that does not appear to be the case, and after the files are updated in S3 the distributor package must be updated to incorporate those changes.