# CommandSection

title: DESCRIPTION
content:
<i>autossh</i> is a utility designed to automatically monitor and restart an SSH session if it detects the connection has dropped or become unresponsive. It works by launching <i>ssh</i> and continuously checking its exit status or by using a dedicated monitoring port mechanism. If <i>ssh</i> exits with a non-zero status, or if the monitoring port mechanism fails to echo data, <i>autossh</i> will attempt to re-establish the connection. This functionality is invaluable for maintaining persistent SSH tunnels (e.g., local or remote port forwards), reverse SSH tunnels for NAT traversal, or long-running interactive SSH sessions over unreliable networks. It ensures that critical connections remain active and automatically recover from network glitches or server-side disconnects, providing a robust solution for continuous remote access and tunneling needs.


title: CAVEATS
content:
While <i>autossh</i> is excellent for maintaining SSH connections, it primarily monitors the SSH process and, with <i>-M</i>, the underlying TCP connection.<br> It may not detect issues within the application layer of an SSH tunnel (e.g., a stalled SOCKS proxy over <i>-D</i>) if the SSH connection itself remains active and the monitoring ports continue to echo. Users should also be mindful of security implications when keeping long-lived SSH tunnels open, especially for reverse SSH scenarios, and ensure appropriate firewall rules and SSH server configurations are in place.


title: HOW MONITORING PORTS WORK (<I>-M</I>)
content:
When the <i>-M</i> option is used, <i>autossh</i> sets up two local listener ports (<i>port</i> and <i>port + 1</i>) and forwards them to corresponding remote ports on the SSH server. <i>autossh</i> then periodically sends data to the local 'monitor' port, which is forwarded to the remote 'monitor' port. The remote 'monitor' port immediately echoes the data back to the remote 'reply' port, which is then forwarded back to the local 'reply' port. If the data sent is not echoed back to the local 'reply' port within a set timeout, <i>autossh</i> concludes the connection is stalled or broken and restarts the <i>ssh</i> process. This mechanism provides a robust way to detect connection health even if the <i>ssh</i> process itself hasn't exited.


title: COMMON USE CASES
content:
<i>autossh</i> is widely used for several critical scenarios:<br><b>Persistent SSH Tunnels:</b> It is ideal for maintaining long-lived local or remote port forwards (e.g., <i>ssh -L 8080:localhost:80</i> or <i>ssh -R 2222:localhost:22</i>), ensuring continuous access to services behind a firewall.<br><b>Reverse SSH for NAT Traversal:</b> It's commonly employed to establish a persistent reverse tunnel from a machine behind a NAT or firewall to a publicly accessible server, thereby enabling remote access to the NAT'd machine.<br><b>Reliable Remote Sessions:</b> While <i>screen</i> or <i>tmux</i> are often preferred for direct interactive use, <i>autossh</i> can ensure a base SSH connection remains stable for automated scripts or long-running background tasks.


title: HISTORY
content:
<i>autossh</i> was created by Jeremy Baum to address the common problem of SSH connections dropping due to network instability or inactivity timeouts. Before its existence, users often resorted to simple shell scripts (like `while true; do ssh ...; done`) to try and keep connections alive, which were far less robust and lacked sophisticated monitoring capabilities. <i>autossh</i> significantly improved the reliability of persistent SSH tunnels and remote access, gaining widespread adoption as a standard tool for this purpose since its initial public releases around the early 2000s.


title: PARAMETERS
content:
<b><b>-D</b> or <b>--daemonize</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs the daemon in the background. It detaches from the controlling terminal.<br><br><b><b>-p</b> <i>PATH</i> or <b>--pid-file=</b><i>PATH</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a custom path for the PID file. By default, it uses /var/run/avahi-autoipd.<interface>.pid.<br><br><b><b>-r</b> or <b>--run-once</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exits after configuring the interface with the first valid IPv4 Link-Local address, or after a DHCP lease is obtained, instead of running continuously.<br><br><b><b>-s</b> or <b>--syslog</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Logs messages to syslog instead of standard error.<br><br><b><b>-t</b> or <b>--test</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables test mode. The daemon performs its operations but does not actually assign an IP address to the interface.<br><br><b><b>-w</b> or <b>--wait</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Waits indefinitely until an IP address is assigned (either via DHCP or Link-Local) or until the specified interface becomes available.<br><br><b><b>--no-chroot</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the chroot() operation, which is normally performed for security reasons.<br><br><b><b>--no-drop-root</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables dropping root privileges. Normally, the daemon drops privileges after initializing.<br><br><b><b>-h</b> or <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b><b>-v</b> or <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays version information and exits.<br><br>


title: DESCRIPTION
content:
<i>avahi-autoipd</i> is a daemon that automatically assigns a unique IPv4 Link-Local address (from the 169.254.0.0/16 range) to a specified network interface. This process is often referred to as APIPA (Automatic Private IP Addressing) or Zeroconf (Zero Configuration Networking) IP address assignment. Its primary function is to ensure that a device can obtain an IP address even in the absence of a DHCP server, allowing basic network communication within the local subnet.<br><br>The daemon first attempts to obtain an IP address via DHCP. If a DHCP lease is successfully acquired, <i>avahi-autoipd</i> exits, as its service is no longer needed. If DHCP fails or is unavailable, it then proceeds to select an address from the Link-Local range and performs ARP (Address Resolution Protocol) probing to ensure the chosen address is not already in use by another device on the network. Once a unique address is confirmed, it configures the interface with that address.<br><br><i>avahi-autoipd</i> is an integral part of the Avahi project, which provides a free and open-source implementation of Apple's Bonjour (Zeroconf) protocol suite for Linux and other Unix-like operating systems. It enables services to be advertised and discovered on a local network without manual configuration, relying on protocols like mDNS (multicast DNS) and DNS-SD (DNS Service Discovery).


title: CAVEATS
content:
<i>avahi-autoipd</i> typically requires root privileges to configure network interfaces. It is often invoked by network management scripts (e.g., from systemd-networkd, NetworkManager, or traditional init scripts) rather than directly by end-users. Running multiple IP address assignment services (like another DHCP client or static configuration) concurrently on the same interface might lead to conflicts.<br><br>The daemon executes a script located at <i>/etc/avahi/autoipd.action</i> upon certain events (like address assignment or conflicts), which can be customized by the system administrator.


title: ACTION SCRIPT
content:
Upon events like acquiring a Link-Local address, detecting a conflict, or losing an address, <i>avahi-autoipd</i> executes the script <i>/etc/avahi/autoipd.action</i>. This script receives environment variables detailing the event and the assigned address. Administrators can customize this script to perform additional actions, such as updating firewall rules, notifying other services, or executing custom commands based on the network state changes.


title: INTEGRATION WITH NETWORK MANAGERS
content:
On modern Linux distributions, <i>avahi-autoipd</i> is frequently integrated with system-level network configuration tools like <i>NetworkManager</i> or <i>systemd-networkd</i>. These tools can automatically start <i>avahi-autoipd</i> for interfaces configured to use Link-Local IP addresses as a fallback, ensuring seamless network connectivity even in challenging environments.


title: HISTORY
content:
<i>avahi-autoipd</i> is part of the Avahi project, which was started around 2005 by Lennart Poettering and Trent Lloyd. Avahi aimed to provide a comprehensive and free implementation of Apple's Zeroconf (Bonjour) protocols for Linux and other Unix-like systems. This included mDNS (multicast DNS) for hostname resolution and DNS-SD (DNS Service Discovery) for discovering services on a local network. <i>avahi-autoipd</i> was developed as a crucial component to ensure that even without a DHCP server, devices could self-configure an IP address, thus providing the foundational network connectivity required for Zeroconf services to function.


title: SEE ALSO
content:
<b>avahi-daemon</b>(8), <b>avahi-browse</b>(1), <b>avahi-discover</b>(1), <b>dhclient</b>(8), <b>ip</b>(8), <b>systemd-networkd</b>(8)


title: SYNOPSIS
content:
<i>This script is invoked by the <b>avahi-autoipd</b> daemon, not directly by users.</i><br><b>avahi-autoipd.action</b> <i>&lt;interface&gt; &lt;script-state&gt; &lt;address&gt; &lt;netmask&gt; [client-id]</i>


title: PARAMETERS
content:
<b>&lt;interface&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the network interface for which the action is being performed (e.g., <i>eth0</i>, <i>wlan0</i>).<br><br><b>&lt;script-state&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Indicates the state or type of action being requested by the daemon. Common values include <i>BOUND</i> (address assigned), <i>UNBOUND</i> (address released), <i>CONFLICT</i> (address conflict detected), and <i>STOP</i> (daemon stopping).<br><br><b>&lt;address&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The IPv4 Link-Local address (e.g., <i>169.254.x.x</i>) that is being assigned, released, or is in conflict.<br><br><b>&lt;netmask&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The network mask associated with the IP address (typically <i>255.255.0.0</i> for Link-Local addresses).<br><br><b>[client-id]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;An optional client identifier, though less commonly used or described in standard documentation for this script.<br><br>


title: DESCRIPTION
content:
The <b>avahi-autoipd.action</b> is a critical helper script utilized by the <b>avahi-autoipd</b> (Avahi AutoIP Daemon) to manage IPv4 Link-Local addressing (also known as APIPA or AutoIP). This daemon assigns IP addresses from the 169.254.0.0/16 range when no DHCP server is available or static configuration is present on a network interface.<br><br>Unlike typical Linux commands, <b>avahi-autoipd.action</b> is not intended for direct user execution. Instead, it acts as an event handler, being invoked by <b>avahi-autoipd</b> whenever a significant network event occurs concerning Link-Local IP assignment. These events include successfully binding an address, releasing an address, or detecting an IP address conflict.<br><br>The script receives parameters from the daemon indicating the specific event and relevant network details (interface, IP address, netmask). It then uses these parameters to perform the necessary system-level network configuration, typically by executing commands like <b>ip</b> to add or remove IP addresses from the specified network interface. Its primary role is to ensure seamless network connectivity in ad-hoc or unmanaged network environments.


title: CAVEATS
content:
This script is part of the Avahi daemon suite and is not intended for direct manual execution by users. Modifications to this script should be done with extreme caution, as incorrect changes can disrupt network connectivity and the proper functioning of the Avahi Link-Local IP assignment. Its functionality relies on the underlying system's networking tools, primarily the <b>ip</b> command. It runs with privileges necessary to modify network interfaces, typically root.


title: STANDARD LOCATION
content:
The <b>avahi-autoipd.action</b> script is typically located at <i>/etc/avahi/avahi-autoipd.action</i> on most Linux distributions. Distributions may provide a default script, which can be customized by system administrators if specific network configuration behaviors are required beyond standard IP address assignment.


title: SCRIPT-STATE ACTIONS
content:
The <i>&lt;script-state&gt;</i> parameter dictates the primary action:<br><ul><li><b>BOUND:</b> When <b>avahi-autoipd</b> successfully acquires a Link-Local IP address. The script will add this IP address to the specified interface.</li><li><b>UNBOUND:</b> When <b>avahi-autoipd</b> releases a previously bound Link-Local IP address, for example, upon detecting a DHCP server or manual static configuration. The script will remove the IP address from the interface.</li><li><b>CONFLICT:</b> When an IP address conflict is detected (another device on the network is using the same Link-Local IP). The script might log the event or take no action if the daemon itself handles re-probing.</li><li><b>STOP:</b> When the <b>avahi-autoipd</b> daemon is shutting down. The script will typically remove any Link-Local IP addresses it previously assigned.</li></ul>


title: HISTORY
content:
The <b>avahi-autoipd.action</b> script is an integral part of the Avahi project, initiated by Lennart Poettering. Avahi aims to provide Zeroconf (Zero Configuration Networking) capabilities, including mDNS (multicast DNS) and DNS-SD (DNS Service Discovery), for Linux and other Unix-like systems. Link-Local IP addressing, managed by <b>avahi-autoipd</b> and its action script, is a fundamental component of Zeroconf, enabling devices to automatically obtain IP addresses and communicate on a local network without the need for manual configuration or a central DHCP server. This event-driven scripting model is a common design pattern in Linux daemons for handling external system interactions.


title: SYNOPSIS
content:
<b>avahi-browse</b> [<i>OPTION</i>...] [<i>TYPE</i>|<i>DOMAIN</i>]<br><br><i>Example usage:</i><br><b>avbr -a</b><br><b>avahi-browse -r _ipp._tcp</b><br><b>avahi-browse --all --resolve --terminate</b>


title: PARAMETERS
content:
<b><b>-a</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show all service types and browsing domains.<br><br><b><b>--all</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Equivalent to <b>-a</b>.<br><br><b><b>-r</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Resolve discovered services to their hostnames and IP addresses.<br><br><b><b>--resolve</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Equivalent to <b>-r</b>.<br><br><b><b>-t</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Terminate the program after the initial listing of services.<br><br><b><b>--terminate</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Equivalent to <b>-t</b>.<br><br><b><b>-s</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show only services (default behavior if no type/domain is specified).<br><br><b><b>--services</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Equivalent to <b>-s</b>.<br><br><b><b>-d</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show only browsing domains.<br><br><b><b>--domains</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Equivalent to <b>-d</b>.<br><br><b><b>-b</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Browse for available browsing domains themselves.<br><br><b><b>--browse-domains</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Equivalent to <b>-b</b>.<br><br><b><b>-v</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output, providing more detailed information.<br><br><b><b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Equivalent to <b>-v</b>.<br><br><b><b>-c</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only show entries that are already in the Avahi daemon's cache.<br><br><b><b>--cache</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Equivalent to <b>-c</b>.<br><br><b><b>-l</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;List all available service types currently known to the daemon.<br><br><b><b>--list-all</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Equivalent to <b>-l</b>.<br><br><b><b>-p</b> <i>&lt;PROTOCOL&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the IP protocol to use (e.g., 'ipv4' or 'ipv6').<br><br><b><b>--protocol=</b><i>&lt;PROTOCOL&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Equivalent to <b>-p</b>.<br><br><b><b>-f</b> <i>&lt;FILTER&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filter displayed services by a given string.<br><br><b><b>--filter=</b><i>&lt;FILTER&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Equivalent to <b>-f</b>.<br><br><b><b>-V</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the Avahi version information and exit.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Equivalent to <b>-V</b>.<br><br><b><b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display a help message and exit.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Equivalent to <b>-h</b>.<br><br>


title: DESCRIPTION
content:
Avahi is a free implementation of Zeroconf, including mDNS (multicast DNS) and DNS-SD (DNS Service Discovery). <b>avahi-browse</b> is a command-line utility provided by the Avahi project, designed to discover services advertised on a local network using these protocols. It allows users to quickly find available resources like network printers, file shares (e.g., AFP, SMB), remote desktop services (VNC, RDP), and other applications that publish their presence via Zeroconf. The command queries the local network for advertised service types and instances, presenting them in a human-readable format. This is particularly useful in environments where manual IP address configuration or hostname lookup is inconvenient or impossible, enabling automatic, zero-configuration networking.


title: CAVEATS
content:
<ul><li>Requires the Avahi daemon (<b>avahi-daemon</b>) to be running in the background for service discovery to function.</li><li>Firewall rules might prevent mDNS (UDP port 5353) traffic, hindering service discovery.</li><li>Services must explicitly advertise themselves using DNS-SD for <b>avahi-browse</b> to find them.</li><li>The <b>--terminate</b> option is crucial for scripting, as <b>avahi-browse</b> runs continuously by default, monitoring for new services.</li></ul>


title: <I>SERVICE TYPES</I>
content:
Services are identified by a type string, typically in the format <i>_service._protocol</i>. Examples include <i>_ipp._tcp</i> for IPP printers, <i>_smb._tcp</i> for Samba shares, or <i>_vnc._tcp</i> for VNC servers. Using <b>avahi-browse -t</b> or <b>avahi-browse -a</b> will reveal various service types present on your network.


title: <I>CONTINUOUS MONITORING</I>
content:
By default, <b>avahi-browse</b> runs continuously, listening for new services or changes to existing ones. This is useful for real-time monitoring. To get a snapshot and exit, use the <b>--terminate</b> option.


title: <I>RESOLVING SERVICES</I>
content:
When a service is found, <b>avahi-browse</b> typically shows its name and type. To get the associated IP address and port, which are often necessary for connecting, use the <b>--resolve</b> option.


title: HISTORY
content:
Avahi was initiated in 2004 by Lennart Poettering and Trent Lloyd as a free software implementation of Apple's Bonjour (formerly Rendezvous) Zeroconf technologies. <b>avahi-browse</b> emerged as a fundamental utility within the Avahi suite, providing a standard way for Linux and Unix-like systems to discover services on local networks without manual configuration. It became widely adopted in many distributions, integrating seamless network discovery into desktop environments and server applications, significantly simplifying device and service interaction.


title: PARAMETERS
content:
<b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, providing more detailed information about the operation.<br><br><b><b>-t</b>, <b>--terse</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Produces terse output, suitable for scripting and machine parsing.<br><br><b><b>-s</b>, <b>--stay</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Causes the command to stay running and continuously print new domains as they appear or disappear.<br><br><b><b>-a</b>, <b>--all</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows all entries, including those internally managed by the Avahi daemon.<br><br><b><b>--short</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs only the domain names, without additional status information.<br><br><b><b>--no-dbus</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables D-Bus communication, attempting to connect to the Avahi daemon via a local socket instead.<br><br><b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debug logging, useful for troubleshooting issues with the Avahi daemon or the command itself.<br><br>


title: DESCRIPTION
content:
The <b>avahi-browse-domains</b> command is a utility from the Avahi project, which provides a free software implementation of Apple's Zero-configuration Networking (Bonjour/Rendezvous) specification. It is used to discover and list all available browsing domains known to the local Avahi daemon. These domains typically include the <i>local.</i> domain for Multicast DNS (mDNS) resolution, but can also encompass unicast DNS domains configured for DNS Service Discovery (DNS-SD).<br><br>This tool is invaluable for administrators and users needing to understand the network's service discovery landscape. By querying the <i>avahi-daemon</i> via D-Bus, it reveals where services can be announced and resolved, facilitating the management of networked resources without manual configuration of IP addresses or DNS records. Its output helps in debugging network discovery issues or simply in exploring available network segments for services.


title: CAVEATS
content:
The command requires the <i>avahi-daemon</i> service to be running in the background, as it acts as a client communicating with this daemon. <br>Without the daemon, or if D-Bus communication is interrupted (and <i>--no-dbus</i> isn't an effective fallback), the command will fail to list any domains. <br>It only reports domains known to the local Avahi instance, which might not encompass all possible domains on larger, segmented networks unless proper DNS-SD bridging is configured.


title: OUTPUT FORMAT
content:
When run without the <i>--short</i> or <i>--terse</i> options, <b>avahi-browse-domains</b> typically outputs lines prefixed with `+` or `-` to indicate additions or removals of domains, followed by the domain type and name. For example, `+;eth0;IPv4;local` indicates the discovery of the `local` domain on `eth0` using IPv4.


title: DAEMON INTERACTION
content:
This command operates by communicating with the running <i>avahi-daemon</i> via D-Bus. The daemon is responsible for performing the actual mDNS/DNS-SD discovery and advertising, while <b>avahi-browse-domains</b> acts as a client to query and display the daemon's gathered information about available domains. This client-server architecture ensures that discovery processes run efficiently in the background.


title: HISTORY
content:
The Avahi project, including <b>avahi-browse-domains</b>, originated as a free and open-source implementation of Apple's Zero-configuration Networking (Zeroconf), initially known as Rendezvous and later Bonjour. <br>It was primarily developed by Lennart Poettering and Trent W. Graham, with initial releases around 2005. <br>The command provides a core client utility for Avahi's service discovery framework on Linux and Unix-like systems, enabling programmatic or manual exploration of network domains without relying on proprietary solutions. <br>Its fundamental purpose has remained consistent since its inception, serving as a vital component of the Avahi suite.


title: SYNOPSIS
content:
<b>avahi-daemon</b> [<I>options</I>]<br><br><I>Note: <b>avahi-daemon</b> is primarily a background service. It is rarely invoked directly by users with command-line options; instead, it's typically managed by an init system like systemd.</I>


title: PARAMETERS
content:
<b><b>-D</b>, <b>--no-daemon</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not daemonize. Run in the foreground. Useful for debugging purposes.<br><br><b><b>-s</b>, <b>--status</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print the current status of the daemon. (Note: On some systems, this functionality might be handled by an init script wrapper rather than the daemon itself).<br><br><b><b>-k</b>, <b>--kill</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Send a SIGTERM signal to the running daemon, instructing it to shut down.<br><br><b><b>-r</b>, <b>--reload</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Send a SIGHUP signal to the running daemon, instructing it to reload its configuration from the configuration file.<br><br><b><b>-c <I>FILE</I></b>, <b>--config=<I>FILE</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative configuration file path instead of the default (<I>/etc/avahi/avahi-daemon.conf</I>).<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show a summary of command-line options and exit.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the version number of the Avahi daemon and exit.<br><br>


title: DESCRIPTION
content:
The <b>avahi-daemon</b> is a system service that implements the <I>Zeroconf</I> (Zero Configuration Networking) specifications, primarily <I>mDNS</I> (multicast DNS) and <I>DNS-SD</I> (DNS Service Discovery).<br><br>Its core purpose is to enable programs and users to discover services and hosts on a local network without manual configuration or dedicated DNS servers. This means devices can automatically find network printers, shared files, remote desktop sessions, and other network resources simply by being connected to the same local area network.<br><br>Avahi functions by broadcasting and listening for network messages on the local link. When a service is published (e.g., a printer announcing its presence), <b>avahi-daemon</b> learns about it and makes it available to other applications on the network. Similarly, it can resolve hostnames (like 'myprinter.local') to IP addresses using mDNS.<br><br>Essentially, Avahi provides a free, open-source implementation of Apple's <I>Bonjour</I> (formerly <I>Rendezvous</I>) technology, making automatic network discovery seamless across Linux, BSD, and other Unix-like systems. It's an integral part of many modern Linux distributions for a plug-and-play network experience.


title: CAVEATS
content:
The <b>avahi-daemon</b> comes with certain considerations:<br>* <I>Security Implications</I>: By design, <b>avahi-daemon</b> advertises services and hosts on the local network. Ensure appropriate firewall rules are in place to restrict access to these services if your network is not fully trusted.<br>* <I>Network Scope</I>: Zeroconf protocols (mDNS/DNS-SD) are primarily designed for local-link (broadcast domain) operation. They do not natively route across subnets without an mDNS reflector or gateway.<br>* <I>Configuration Dependency</I>: The daemon's behavior is heavily influenced by its configuration file (<I>/etc/avahi/avahi-daemon.conf</I>). Incorrect settings can lead to network discovery issues or expose unwanted services.<br>* <I>Conflicts</I>: Running multiple mDNS/DNS-SD implementations simultaneously (e.g., another Bonjour client) can lead to conflicts and unexpected behavior.


title: CONFIGURATION FILE
content:
The primary configuration for <b>avahi-daemon</b> is done via the <I>/etc/avahi/avahi-daemon.conf</I> file. This file controls various aspects of the daemon's behavior, including network interfaces to use, mDNS host name resolution, service publishing rules, and security settings. Changes to this file typically require reloading or restarting the daemon for them to take effect.


title: SERVICE MANAGEMENT
content:
On most modern Linux systems, <b>avahi-daemon</b> is managed as a system service using <I>systemd</I>. Common commands to interact with the service include:<br><b>systemctl start avahi-daemon</b><br><b>systemctl stop avahi-daemon</b><br><b>systemctl restart avahi-daemon</b><br><b>systemctl status avahi-daemon</b><br><b>systemctl enable avahi-daemon</b> (to start automatically at boot)


title: INTEGRATION
content:
<b>avahi-daemon</b> integrates with various parts of the Linux ecosystem:<br>* <I>NSS (Name Service Switch)</I>: Through the <I>nss-mdns</I> module, Avahi allows applications to resolve <I>.local</I> hostnames using mDNS.<br>* <I>CUPS</I>: Enables automatic discovery and configuration of network printers.<br>* <I>Samba</I>: Facilitates discovery of Windows file shares.<br>* <I>Desktop Environments</I>: GNOME, KDE, and other desktop environments leverage Avahi for network browsing and service discovery in their file managers and network configuration tools.


title: HISTORY
content:
The concept of Zero Configuration Networking (Zeroconf) gained prominence with Apple's <I>Rendezvous</I> (later renamed <I>Bonjour</I>) technology. In response to the need for an open-source and cross-platform implementation, the <I>Avahi</I> project was started by <I>Lennart Poettering</I> and others.<br><br>First publicly released around 2004, Avahi aimed to provide a robust and standards-compliant alternative to Bonjour for Linux and Unix-like systems. It quickly gained adoption and became a cornerstone for automatic network discovery in many Linux distributions, allowing seamless integration with devices like network printers and file shares without requiring manual IP address or hostname configuration. Its development focused on stability, security, and broad protocol compliance.


title: SEE ALSO
content:
avahi-browse(1), avahi-discover(1), avahi-publish(1), nss-mdns(8), systemctl(1), hosts(5), resolv.conf(5)


title: SYNOPSIS
content:
<b>avahi-publish</b> [<i>OPTIONS</i>] <i>&lt;mode&gt; ...</i><br><br><i>&lt;mode&gt;</i> can be one of the following:<br>&nbsp;&nbsp;<b>-s</b>, <b>--service</b> <i>&lt;name&gt; &lt;type&gt; &lt;port&gt;</i> [<i>interface</i>] [<i>host</i>] [<i>domain</i>] [<i>TXT ...</i>]<br>&nbsp;&nbsp;<b>-S</b>, <b>--address</b> <i>&lt;name&gt; &lt;address&gt;</i>


title: PARAMETERS
content:
<b><b>-s</b>, <b>--service</b> <i>&lt;name&gt; &lt;type&gt; &lt;port&gt;</i> [<i>interface</i>] [<i>host</i>] [<i>domain</i>] [<i>TXT ...</i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Publishes a DNS-SD service record. <i>&lt;name&gt;</i> is the human-readable service name, <i>&lt;type&gt;</i> is the service type (e.g., <i>_http._tcp</i>), and <i>&lt;port&gt;</i> is the service's port number. Optional arguments include the network interface, the host's name, the domain, and arbitrary TXT record key-value pairs.<br><br><b><b>-S</b>, <b>--address</b> <i>&lt;name&gt; &lt;address&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Publishes an address record (A/AAAA record). <i>&lt;name&gt;</i> is the hostname to advertise, and <i>&lt;address&gt;</i> is the IP address (IPv4 or IPv6) associated with it.<br><br><b><b>-H</b>, <b>--host</b> <i>&lt;host&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the host name to use for the service record instead of the local machine's default hostname. Only applicable when publishing a service.<br><br><b><b>-P</b>, <b>--protocol</b> <i>&lt;protocol&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the IP protocol to use for publishing: <i>ipv4</i>, <i>ipv6</i>, or <i>all</i> (default).<br><br><b><b>-t</b>, <b>--ttl</b> <i>&lt;seconds&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the Time-To-Live (TTL) for the published DNS records in seconds. The default is typically 10 seconds for mDNS records.<br><br><b><b>-d</b>, <b>--daemonize</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Detaches the process from the controlling terminal and runs in the background. When daemonized, the publication will persist until the background process is stopped.<br><br><b><b>-p</b>, <b>--pidfile</b> <i>&lt;file&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Writes the process ID (PID) to the specified file when daemonized.<br><br><b><b>-c</b>, <b>--no-chroot</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables chrooting. By default, <i>avahi-publish</i> attempts to chroot for security reasons if it drops root privileges.<br><br><b><b>-C</b>, <b>--no-drop-root</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables dropping root privileges. By default, <i>avahi-publish</i> attempts to drop root privileges after binding to network ports for enhanced security.<br><br><b><b>-e</b>, <b>--no-fail</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Does not exit immediately if it fails to bind to a network port or encounters another error. It will keep trying to publish.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, printing more information about the publishing process to the console.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the version number of the <i>avahi-publish</i> utility and exits.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with usage information and available options, then exits.<br><br>


title: DESCRIPTION
content:
<i>avahi-publish</i> is a command-line utility from the Avahi project, an open-source implementation of Zeroconf (also known as Bonjour or Rendezvous). It enables users to advertise network services or host addresses on a local network using mDNS (multicast DNS) and DNS-SD (DNS Service Discovery) protocols. This allows other Zeroconf-aware clients to discover these advertised resources without the need for a centralized DNS server. It's often used for temporary announcements, testing, or in scripts where dynamic service advertisement is required, as the publications cease when the command exits unless explicitly daemonized.<br><br>The tool acts as a wrapper for two main functionalities: publishing services (similar to <i>avahi-publish-service</i> for advertising services like HTTP, SSH, with their port and optional TXT records) and publishing addresses (similar to <i>avahi-publish-address</i> for associating a hostname with an IP address). Unlike <i>avahi-daemon</i> which provides persistent service publication, <i>avahi-publish</i> offers a more direct, transient method of advertising.


title: CAVEATS
content:
Unless daemonized with the <b>-d</b> option, published services and addresses are temporary and will cease to be advertised as soon as the <i>avahi-publish</i> command exits. This tool can operate independently of the <i>avahi-daemon</i>, meaning the daemon does not need to be running for <i>avahi-publish</i> to function; it can directly send mDNS packets. However, if the daemon is running, <i>avahi-publish</i> might communicate with it via D-Bus for some operations. Publishing services makes them discoverable to other devices on the local network; ensure any advertised services are intentionally public.


title: ZEROCONF PRINCIPLES (MDNS/DNS-SD)
content:
<i>avahi-publish</i> operates on the principles of Zeroconf, specifically Multicast DNS (mDNS) and DNS Service Discovery (DNS-SD). mDNS allows hosts to resolve domain names to IP addresses within a small local network without requiring a central DNS server. DNS-SD builds upon mDNS by providing a mechanism to discover available network services (e.g., printers, file shares, web servers) and their details (host, port, TXT records) by querying specific service types (e.g., <i>_printer._tcp</i>). <i>avahi-publish</i> directly broadcasts these mDNS/DNS-SD packets on the local network to announce the specified services or addresses, making them immediately discoverable by other Zeroconf-compatible devices.


title: COMMON USE CASES
content:
Typical applications for <i>avahi-publish</i> include:<br><ul><li><b>Temporary Service Advertisement:</b> Quickly making a service (e.g., a local web server running on an uncommon port or a custom application) discoverable for a short period.</li><li><b>Scripting and Automation:</b> Dynamically advertising services from within scripts, for instance, advertising a development server or a test environment only when it's active.</li><li><b>Testing and Debugging:</b> Verifying that mDNS/DNS-SD is functioning correctly on a network, or testing how client applications react to specific service advertisements.</li><li><b>Ad-hoc Network Services:</b> Providing simple service discovery in environments without a central infrastructure like a traditional DNS server, such as peer-to-peer networks or temporary setups.</li></ul>


title: HISTORY
content:
The Avahi project was initiated around 2004 as a free and open-source implementation of Apple's Bonjour (previously called Rendezvous), a suite of technologies for Zeroconf networking. Developed primarily by Lennart Poettering, Trent Lloyd, and others, Avahi provides a robust framework for mDNS/DNS-SD on Linux and other Unix-like systems. <i>avahi-publish</i> emerged as a fundamental command-line tool within this ecosystem, providing a direct interface for users to advertise their services and hosts, mirroring functionalities found in Apple's <i>dns-sd</i> utility. Its development has been integral to making plug-and-play network service discovery a standard feature on Linux desktop environments and embedded systems.


title: SYNOPSIS
content:
<b>avahi-publish-address</b> [<i>OPTIONS</i>] <i>&lt;hostname&gt;</i> <i>&lt;address&gt;</i><br><br><i>&lt;hostname&gt;</i>: The mDNS hostname (e.g., "mydevice") to publish. This will typically resolve as "mydevice.local".<br><i>&lt;address&gt;</i>: The IP address (e.g., "192.168.1.100" or "fe80::1") to associate with the hostname.


title: PARAMETERS
content:
<b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show a help message and exit.<br><br><b><b>-v</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show the version number and exit.<br><br><b><b>-D</b>, <b>--daemonize</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Detach from the controlling terminal and run as a daemon in the background.<br><br><b><b>-d</b>, <b>--domain=DOMAIN</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the mDNS domain name to register in (defaults to 'local').<br><br><b><b>-P</b>, <b>--proto=PROTO</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the IP protocol to publish ('ipv4' or 'ipv6'). By default, it publishes for both if the address type is ambiguous.<br><br><b><b>-V</b>, <b>--ttl=SECONDS</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the DNS Time To Live (TTL) for the published record in seconds (defaults to 120).<br><br><b><b>-e</b>, <b>--no-reverse</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not publish a reverse DNS (PTR) entry for the address.<br><br><b><b>-n</b>, <b>--no-wait</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not wait for the Avahi daemon to start before attempting to publish.<br><br>


title: DESCRIPTION
content:
<i>avahi-publish-address</i> is a utility from the Avahi project, designed to publish a specific network address (IPv4 or IPv6) associated with a given hostname on a local network using Multicast DNS (mDNS). mDNS allows devices to discover each other and their services without requiring a central DNS server. When you run this command, it announces that <b>&lt;hostname&gt;.local</b> (or a specified domain) resolves to <b>&lt;address&gt;</b>. This makes the device discoverable by other Avahi/Bonjour-enabled clients on the same local subnet. It's commonly used for headless devices or services that need to announce their presence and IP address in a zero-configuration networking environment. The command remains active, continuously publishing the address until it's terminated, ensuring ongoing discoverability.


title: CAVEATS
content:
The <b>avahi-daemon</b> service must be running for <i>avahi-publish-address</i> to function. If the specified hostname is already taken on the local network, Avahi's conflict resolution mechanism will typically try to append a number (e.g., 'mydevice-2.local') to ensure uniqueness. However, this command will continue to try publishing the <i>exact</i> name given if it's explicitly provided, which might lead to issues if another device is also publishing the same name. It is designed to be run as a long-lived process to maintain the advertisement.


title: EXAMPLE USAGE
content:
To publish the hostname <i>mydevice.local</i> with the IPv4 address <i>192.168.1.100</i>:<br><br><b>avahi-publish-address mydevice 192.168.1.100</b><br><br>To run this in the background as a daemon:<br><br><b>avahi-publish-address -D mydevice 192.168.1.100</b><br><br>To publish an IPv6 address:<br><br><b>avahi-publish-address -P ipv6 myipv6host fe80::1234:5678:9abc:def0</b>


title: INTERACTION WITH /ETC/HOSTS
content:
mDNS entries published via Avahi operate independently of the <i>/etc/hosts</i> file. While <i>/etc/hosts</i> provides static local hostname-to-IP mappings, Avahi provides dynamic, network-wide discovery. They serve different purposes, though both can be used for name resolution.


title: HISTORY
content:
<i>avahi-publish-address</i> is part of the Avahi project, which started in 2004 as a free software implementation of Apple's Bonjour (formerly Rendezvous) zero-configuration networking specification. It aims to provide seamless service discovery and device resolution on local networks, primarily for Linux and other Unix-like operating systems. The command's core functionality has remained consistent, serving as a fundamental tool for advertising hostnames and IP addresses.


title: SYNOPSIS
content:
<b>avahi-publish-service</b> [<i>options</i>] <i>&lt;name&gt;</i> <i>&lt;type&gt;</i> <i>&lt;port&gt;</i> [<i>TXT record ...</i>]


title: PARAMETERS
content:
<b><b>-s</b> <i>&lt;SUBTYPE&gt;</i>, <b>--subtype</b>=<i>&lt;SUBTYPE&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a subtype for the service, allowing more granular discovery by clients looking for specific variants of a service.<br><br><b><b>-d</b> <i>&lt;DOMAIN&gt;</i>, <b>--domain</b>=<i>&lt;DOMAIN&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the domain for the service; defaults to <i>.local</i> for typical mDNS operations.<br><br><b><b>-H</b> <i>&lt;HOST&gt;</i>, <b>--host</b>=<i>&lt;HOST&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the hostname under which the service is published. If not provided, the local machine's hostname is used.<br><br><b><b>-f</b>, <b>--no-fail</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the command from exiting immediately if publishing initially fails; it will instead retry indefinitely.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the Avahi version information and then exits.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message with available options and then exits.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, showing more details about the publishing process and Avahi daemon communication.<br><br><b><b>-c</b>, <b>--cache</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables caching of host name lookups related to the published service, potentially improving resolution performance.<br><br><b><b>-a</b>, <b>--auto-rename</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Automatically renames the service if a conflict is detected on the network, typically by appending a number (e.g., 'My Service (2)').<br><br><b><b>-p</b>, <b>--publish-address</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs Avahi to also publish the host's IP address along with the service record, which can be useful for direct connection.<br><br><b><b>-t</b>, <b>--no-terminate</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the command from terminating on a SIGINT signal (e.g., Ctrl+C). This can be useful for specific scripting scenarios, but requires manual termination.<br><br><b><b>-k</b> <i>&lt;KEY&gt;</i>, <b>--service-key</b>=<i>&lt;KEY&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a service key for authenticated service publishing, if supported and configured by the Avahi daemon.<br><br><b><b>-e</b>, <b>--no-echo</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses the echoing of TXT record contents to standard output during the publishing process.<br><br>


title: DESCRIPTION
content:
<i>avahi-publish-service</i> is a command-line utility from the Avahi project, designed to easily publish a network service using Multicast DNS (mDNS) and DNS Service Discovery (DNS-SD), commonly known as Zeroconf or Bonjour. This allows clients on the local network to discover the service without requiring manual configuration or a central DNS server. It's particularly useful for ad-hoc service announcements, testing, or integrating Avahi-based service discovery into scripts.<br><br>The command requires you to specify the service name, type, and port, and optionally allows adding TXT records for additional information. It runs in the foreground by default, continuously publishing the service until terminated. This facilitates plug-and-play networking by enabling automatic discovery of resources like printers, file shares, or custom applications, thereby simplifying network management in dynamic environments.


title: CAVEATS
content:
The <b>avahi-daemon</b> service must be running for <b>avahi-publish-service</b> to function correctly, as it acts as a client to the daemon.<br><br>The command runs in the foreground; terminating it (e.g., with Ctrl+C, unless <b>--no-terminate</b> is used) will stop the service announcement. For continuous availability, it should be run in a persistent manner (e.g., within a service manager like systemd, or a <b>screen</b>/<b>tmux</b> session).<br><br>mDNS/DNS-SD typically operates only within the local network segment (subnet) and does not traverse routers without specialized gateways or configurations.<br><br>Service name conflicts can occur if the chosen service name is already in use on the network and the <b>--auto-rename</b> option is not utilized, potentially leading to service discovery issues for clients.


title: SERVICE DEFINITION
content:
The command requires three mandatory positional arguments to define the service:<br><b>name</b>: A human-readable name for the service (e.g., <i>My Web Server</i>, <i>Shared Printer</i>). This name will be displayed to clients.<br><b>type</b>: The service type, which typically follows a standardized format like <i>_service._protocol.</i> (e.g., <i>_ssh._tcp</i> for SSH, <i>_http._tcp</i> for HTTP, <i>_ipp._tcp</i> for IPP printers, <i>_sftp-ssh._tcp</i> for SFTP).<br><b>port</b>: The TCP or UDP port number on which the service is listening.<br><br>For example, to publish an SSH service on port 22 named 'My Dev Server SSH':<br><i>avahi-publish-service "My Dev Server SSH" _ssh._tcp 22</i>


title: TXT RECORDS
content:
Optional <i>TXT record</i> arguments can be appended after the port number. These allow you to include arbitrary key-value pairs that provide additional information about the service to discovering clients. TXT records are vital for passing configuration details or metadata that clients might need. Examples include <i>path=/index.html</i>, <i>version=1.0</i>, <i>location=LivingRoom</i>, or <i>admin_email=admin@example.com</i>. Multiple TXT records can be provided as separate arguments.<br><br>Example with TXT records:<br><i>avahi-publish-service "Home Media Server" _http._tcp 8080 "path=/media" "user=guest"</i>


title: HISTORY
content:
Avahi emerged as a free software implementation of Apple's Bonjour (formerly Rendezvous) Zeroconf networking architecture. It was developed to provide automatic service discovery for Linux and other Unix-like systems, addressing the need for plug-and-play network capabilities. <b>avahi-publish-service</b> is a core command-line utility within the Avahi suite, introduced early in its development to simplify the process of service announcement from the terminal or within shell scripts. Its continuous development reflects the ongoing importance of automatic network configuration in modern computing environments.


title: SEE ALSO
content:
<b>avahi-browse</b>(1), <b>avahi-resolve</b>(1), <b>avahi-daemon</b>(8), <b>avahi-publish</b>(1), <b>nss-mdns</b>(5)


title: PARAMETERS
content:
<b><b>-4</b>, <b>--ipv4</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the resolution to only look up IPv4 addresses.<br><br><b><b>-6</b>, <b>--ipv6</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the resolution to only look up IPv6 addresses.<br><br><b><b>-n</b>, <b>--no-reverse</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the command from performing reverse lookups (PTR queries).<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, providing more detailed information about the resolution process.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a brief help message and exits.<br><br><b><b>-V</b>, <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the version information of the <i>avahi-resolve</i> utility and exits.<br><br>


title: DESCRIPTION
content:
<i>avahi-resolve</i> is a command-line utility part of the <b>Avahi</b> project, which provides a free software implementation of <b>Zeroconf</b>, also known as <b>Bonjour</b> or <b>Rendezvous</b>. Its primary function is to resolve <i>.local</i> hostnames and DNS-SD service names into their corresponding IP addresses or service details on a local network segment.<br><br>It leverages <b>Multicast DNS (mDNS)</b> and <b>DNS Service Discovery (DNS-SD)</b> to query the local network for devices and services advertised without the need for a central DNS server. This tool is invaluable for troubleshooting Avahi installations, verifying service advertisements, or integrating mDNS/DNS-SD resolution into scripts. It relies on the <i>avahi-daemon</i> running in the background to perform the actual network queries.


title: CAVEATS
content:
For <i>avahi-resolve</i> to function correctly, the <b>Avahi daemon</b> (<i>avahi-daemon</i>) must be running on the system. It only operates on the local link using <b>mDNS/DNS-SD</b> protocols, meaning it cannot resolve public internet hostnames. Network firewalls must allow <b>UDP traffic on port 5353</b> for mDNS communication.


title: EXIT STATUS
content:
The command typically returns <b>0</b> on successful resolution and <b>non-zero</b> (e.g., 1) if an error occurs or the specified host/service cannot be resolved.


title: HISTORY
content:
The <b>Avahi</b> project was initiated as a free and open-source implementation of Apple's <b>Bonjour (Zeroconf)</b> network discovery technology. It was primarily developed by <b>Lennart Poettering</b> and <b>Trent Lloyd</b>, with its first stable release around 2005. <i>avahi-resolve</i> is one of the foundational command-line utilities provided by the Avahi suite, offering basic resolution capabilities to test and interact with the mDNS/DNS-SD system.


title: PARAMETERS
content:
<b><i>&lt;address&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The IP address (IPv4 or IPv6) to be resolved to an mDNS hostname.<br><br><b><b>-t</b> | <b>--timeout=</b><i>MSEC</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a timeout in milliseconds. The command will exit if no resolution is found within this time.<br><br><b><b>-4</b> | <b>--ipv4</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the resolution to only look for IPv4 addresses.<br><br><b><b>-6</b> | <b>--ipv6</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces the resolution to only look for IPv6 addresses.<br><br><b><b>-v</b> | <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays more detailed output, useful for debugging.<br><br><b><b>-h</b> | <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a help message and exits.<br><br><b><b>-V</b> | <b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows version information and exits.<br><br>


title: DESCRIPTION
content:
<i>avahi-resolve-address</i> is a command-line utility provided by the Avahi project, which implements the Zero Configuration Networking (Zeroconf) specifications, including Multicast DNS (mDNS) and DNS Service Discovery (DNS-SD). This command's primary function is to resolve an IP address (IPv4 or IPv6) into its corresponding hostname as registered via mDNS on the local network. It's particularly useful in environments where traditional DNS servers are not configured, or for discovering devices that advertise their names locally using mDNS, such as network printers, other computers, or IoT devices. It allows users to quickly determine the hostname associated with a specific IP address without needing to configure a local DNS server or rely on manually maintained <i>/etc/hosts</i> entries.


title: CAVEATS
content:
<ul><li>Requires the Avahi daemon (<i>avahi-daemon</i>) to be running and correctly configured on the system.</li><li>Only resolves addresses that are advertised via mDNS on the local link. It will not query traditional DNS servers.</li><li>May not work if network multicast is disabled or restricted on the network.</li><li>Resolution depends on the target device actively advertising its name via mDNS.</li></ul>


title: USAGE EXAMPLE
content:
To resolve the IP address 192.168.1.100, you would run:<br><code><i>avahi-resolve-address 192.168.1.100</i></code><br>If successful, it might output something like: <br><code><i>192.168.1.100 myprinter.local</i></code>


title: AVAHI VS. BONJOUR
content:
Avahi is often considered the open-source equivalent to Apple's Bonjour (formerly Rendezvous) technology. Both implement the same Zeroconf standards, allowing them to interoperate seamlessly on a network.


title: HISTORY
content:
Avahi is an open-source implementation of Zeroconf (Zero Configuration Networking), which includes mDNS (Multicast DNS) and DNS-SD (DNS Service Discovery). Developed primarily by Lennart Poettering and Trent Lloyd, Avahi was initially released in 2005. It provides a system for applications to publish and discover services and hosts on a local network without requiring manual configuration or traditional DNS servers. <i>avahi-resolve-address</i> emerged as one of the fundamental client utilities to query mDNS names, offering a command-line interface to the underlying Avahi daemon's address resolution capabilities. Its development has mirrored the wider adoption of Zeroconf technologies in Linux and other Unix-like systems.


title: SEE ALSO
content:
avahi-resolve-host-name(1), avahi-browse(1), avahi-publish(1), avahi-daemon(8), dns-sd(1), host(1), dig(1)


title: PARAMETERS
content:
<b>-4, --ipv4</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Resolve IPv4 addresses only. If specified, the command will only look for and return IPv4 addresses for the given hostname.<br><br><b>-6, --ipv6</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Resolve IPv6 addresses only. If specified, the command will only look for and return IPv6 addresses for the given hostname.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable verbose output. This provides more detailed information about the resolution process, which can be helpful for debugging.<br><br><b>-t <timeout>, --timeout=<MSEC></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the query timeout in milliseconds. The command will wait for a response for this duration before giving up. A value of 0 means no timeout.<br><br>


title: DESCRIPTION
content:
<i><b>avahi-resolve-host-name</b></i> is a command-line utility from the Avahi project, an open-source implementation of Zeroconf (also known as Bonjour or Apple's service discovery technology). Its primary function is to resolve hostnames that are discoverable via Multicast DNS (mDNS) on the local network into their corresponding IP addresses (IPv4 or IPv6).<br><br>Unlike traditional DNS, which relies on a central server, mDNS operates by sending multicast queries to all devices on the local subnet. Devices that recognize the queried hostname respond directly with their IP address. This makes <i><b>avahi-resolve-host-name</b></i> particularly useful for discovering devices like network printers, smart home appliances, or other computers (e.g., Raspberry Pis) that advertise themselves using <i>.local</i> hostnames, without needing a dedicated DNS server configuration.<br><br>The command queries the Avahi daemon, which manages mDNS services, to perform the hostname resolution. It provides a quick and convenient way to check the network presence and IP address of mDNS-enabled devices.


title: CAVEATS
content:
<ul><li>Requires the Avahi daemon (<i>avahi-daemon</i>) to be running and properly configured on the system for optimal operation.</li><li>Primarily resolves hostnames ending in <i>.local</i>, which are standard for mDNS. It does not resolve traditional DNS names.</li><li>Relies on multicast networking (UDP port 5353) to be enabled and not blocked by firewalls on the local network segment.</li><li>Resolution only works for devices advertising their presence via mDNS.</li></ul>


title: USE CASES
content:
<i><b>avahi-resolve-host-name</b></i> is invaluable in environments where devices are frequently added or removed without fixed IP addresses, or in home networks where a dedicated DNS server might not be present. Common use cases include:<br><ul><li><b>Discovering IoT Devices:</b> Finding the IP address of smart home devices that advertise themselves via mDNS.</li><li><b>Accessing Raspberry Pis/SBCs:</b> Easily connecting to single-board computers (e.g., <i>raspberrypi.local</i>) without knowing their dynamically assigned IP address.</li><li><b>Network Printer Discovery:</b> Locating and connecting to network-enabled printers that support Bonjour/mDNS.</li><li><b>Ad-hoc Network Configuration:</b> Facilitating communication between devices on a local network without manual IP configuration.</li></ul>


title: HOW IT WORKS
content:
When you run <i><b>avahi-resolve-host-name</b></i>, it typically communicates with the local Avahi daemon (<i>avahi-daemon</i>). The daemon then sends out a Multicast DNS (mDNS) query on the local network (UDP port 5353, destination IP 224.0.0.251 for IPv4 or ff02::fb for IPv6). Any device on the network that identifies with the queried hostname will respond directly to the host that sent the query, providing its IP address. The Avahi daemon receives this response and passes it back to the <i><b>avahi-resolve-host-name</b></i> command, which then displays the resolved IP address to the user.


title: HISTORY
content:
The Avahi project was initiated by Lennart Poettering (known for PulseAudio and systemd) and others, aiming to provide an open-source implementation of Apple's Zeroconf (Bonjour) networking technology for Linux and other Unix-like systems. It was developed to enable automatic discovery of services and devices on a local network without manual configuration or a central DNS server. <i><b>avahi-resolve-host-name</b></i> is a foundational utility within this suite, providing direct hostname-to-IP resolution capabilities that leverage the mDNS protocol.


title: PARAMETERS
content:
<b>NEW_HOSTNAME</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The desired new hostname (a string) that Avahi should advertise on the network. This name will be used in mDNS records.<br><br>


title: DESCRIPTION
content:
The <b>avahi-set-host-name</b> command is a utility for dynamically updating the hostname that the <I>Avahi</I> daemon advertises on a network using <I>mDNS</I> (Multicast DNS) and <I>DNS-SD</I> (DNS Service Discovery). Avahi is an open-source implementation of Apple's <I>Bonjour</I> zero-configuration networking. While Linux systems typically manage their primary hostname via commands like <B>hostnamectl</B> or by modifying <I>/etc/hostname</I>, these changes often require a system reboot or a restart of various services to take full effect.<br><br><b>avahi-set-host-name</b> provides a way to tell the running <I>Avahi</I> daemon to immediately begin advertising a new hostname without requiring a restart of the <I>avahi-daemon</I> service. It does this by communicating with the daemon over <I>D-Bus</I>, triggering an update to the mDNS records (A and AAAA records) broadcast for the host. This is particularly useful in environments where the machine's perceived name on the local network needs to change without impacting its static system hostname or disrupting other services. It's crucial to understand that this command only affects Avahi's broadcasted name, not the system's persistent hostname.


title: CAVEATS
content:
Requires the <b>avahi-daemon</b> service to be actively running in the background for the command to function. If the daemon is not running, the command will fail.<br>This command modifies only the hostname advertised by Avahi via mDNS/DNS-SD; it does <b>not</b> change the system's static hostname (e.g., as set in <I>/etc/hostname</I> or reported by <B>hostnamectl</B>).<br>Typically requires root privileges to execute successfully, as it interacts with the system-wide Avahi daemon via D-Bus.<br>The new hostname must be a valid DNS label (e.g., alphanumeric, hyphens, no underscores, max 63 characters per label).


title: INTERACTION WITH D-BUS
content:
The <b>avahi-set-host-name</b> command communicates with the running <b>avahi-daemon</b> through the <I>D-Bus</I> message bus system. It sends a D-Bus method call to the daemon to request a hostname update, which then triggers the daemon to send out new mDNS records reflecting the change. This mechanism allows for dynamic updates without interrupting the daemon's operation.


title: SCOPE OF HOSTNAME CHANGE
content:
It's critical to understand that the hostname updated by <b>avahi-set-host-name</b> is specifically the name advertised through <I>Avahi</I>'s mDNS services. This name is primarily used by other mDNS-aware devices on the local network to discover and connect to your machine by name. It does <b>not</b> alter the system's static hostname (the name returned by <B>hostname</B> or <B>hostnamectl</B> or found in <I>/etc/hostname</I>), which is used for other system-level operations and configurations.


title: HISTORY
content:
The <b>avahi-set-host-name</b> utility is an integral part of the <I>Avahi</I> project, which was started around 2004. Avahi itself originated from the <I>mDNSResponderposix</I> project and was conceived to provide a free and open-source implementation of Zeroconf (Zero Configuration Networking) technologies, specifically <I>mDNS</I> and <I>DNS-SD</I>, for Linux and other Unix-like systems. This command was developed as a simple, direct interface to update the Avahi daemon's advertised hostname at runtime, avoiding the need for service restarts that would typically be required for system hostname changes. Its inclusion reflects the Avahi project's commitment to providing flexible and dynamic network service configuration.


title: PARAMETERS
content:
<b><input_file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the source image file (e.g., PNG, JPEG, WebP).<br><br><b><output_file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path for the destination AVIF file.<br><br><b>-q <quality></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the encoding quality level from 0 (lowest) to 100 (highest).<br><br><b>-s <speed></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the encoding speed from 0 (slowest, best quality) to 10 (fastest, lowest quality).<br><br><b>-j <threads></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the number of CPU threads to use for encoding.<br><br><b>--min-quantizer <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the minimum quantizer for color channels (0-63). Lower values mean higher quality.<br><br><b>--max-quantizer <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the maximum quantizer for color channels (0-63). Higher values mean lower quality.<br><br><b>--min-quantizer-alpha <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the minimum quantizer for the alpha channel (0-63).<br><br><b>--max-quantizer-alpha <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the maximum quantizer for the alpha channel (0-63).<br><br><b>--depth <depth></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the output bit depth (8, 10, or 12 bits). 10-bit or 12-bit is suitable for HDR content.<br><br><b>--monochromatic</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Encode the image in grayscale.<br><br><b>--drop-alpha</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Encode without an alpha channel, even if present in the input image.<br><br><b>--codec <codec></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the AV1 encoder to use: 'aom' (libaom), 'rav1e' (librav1e), or 'svtav1' (SVT-AV1).<br><br><b>--sharpness <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adjust the encoder's sharpness setting (0-7).<br><br><b>--tile-rows <rows></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Number of tile rows to use for parallel encoding.<br><br><b>--tile-columns <cols></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Number of tile columns to use for parallel encoding.<br><br><b>--grid <width>x<height></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Encode a grid of images, either from multiple input files or treating a single image as a grid.<br><br><b>--cicp <cp>/<tc>/<mc></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set color primaries, transfer characteristics, and matrix coefficients using ITU-T H.273 values.<br><br><b>--icc-profile <path></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Embed an ICC color profile from the specified path.<br><br><b>--yuv-range <range></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify YUV color range: 'limited' or 'full'.<br><br>


title: DESCRIPTION
content:
<i>avifenc</i> is a powerful command-line utility for encoding images into the AVIF (AV1 Image File Format). Based on the AV1 video codec, AVIF offers superior compression efficiency compared to older formats like JPEG and PNG, resulting in smaller file sizes with comparable or better visual quality. It supports advanced features including transparency (alpha channel), high dynamic range (HDR), wide color gamut (WCG), and various color depths (8, 10, 12-bit). <i>avifenc</i> can leverage different AV1 encoder implementations, such as AOM, rav1e, or SVT-AV1, allowing users to balance between output file size, visual fidelity, and encoding speed according to their needs. It's an essential tool for modern web development and image optimization.


title: CAVEATS
content:
<i>avifenc</i> encoding can be <b>CPU-intensive and time-consuming</b>, especially at higher quality settings or lower speed presets. The performance can vary significantly depending on the chosen AV1 encoder (`--codec` option). Support for various input image formats depends on how <i>libavif</i> was compiled and which image libraries (like <i>libjpeg</i>, <i>libpng</i>, <i>libwebp</i>) it was linked against. While AVIF offers excellent compression, its adoption might still be limited in some older software or platforms compared to more established formats like JPEG or PNG.


title: KEY AVIF FEATURES
content:
AVIF boasts several advanced features, making it a compelling choice for modern image needs. These include robust support for HDR (High Dynamic Range) and WCG (Wide Color Gamut), flexible color depths (8, 10, or 12-bit), native transparency (alpha channel), and the ability to handle image sequences (for animations or multi-layer images) and image grids. These capabilities position AVIF as a versatile and future-proof image format for a wide range of applications.


title: ENCODER BACKENDS
content:
<i>avifenc</i> can utilize different AV1 encoder implementations, each with distinct characteristics:<br><b>aom:</b> The reference encoder, generally offers excellent quality but can be slower for encoding.<br><b>rav1e:</b> A Rust-based encoder known for a good balance between speed and quality, often faster than <i>aom</i> at similar quality levels.<br><b>svtav1:</b> An Intel-developed encoder highly optimized for speed, often providing the fastest encodes, particularly on supported hardware.


title: HISTORY
content:
The AVIF format was standardized in 2019 by the Alliance for Open Media (AOMedia), building upon the open and royalty-free AV1 video codec. <i>avifenc</i> is a core component of <i>libavif</i>, an open-source library that provides comprehensive AVIF encoding and decoding capabilities. Development of <i>libavif</i> and consequently <i>avifenc</i> began shortly after the AVIF specification's release, with continuous improvements in performance, feature support, and encoder integrations as the AV1 ecosystem matures. Its usage has grown steadily with increasing browser and application support for AVIF images.


title: SYNOPSIS
content:
<i><b>avo</b></i> [<i>GLOBAL_OPTIONS</i>] <i>SUBCOMMAND</i> [<i>SUBCOMMAND_OPTIONS</i>] [<i>ARGUMENTS</i>]


title: PARAMETERS
content:
<b>--log-to <I>PATH</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Directs log messages from the underlying <i><b>avocado</b></i> command to a specified file path. This is a global option for <i><b>avocado</b></i>.<br><br><b>--verbose, -v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays detailed execution information from the <i><b>avocado</b></i> command. A global option for increased verbosity.<br><br><b>--debug, -d</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables debugging output for deeper introspection of the <i><b>avocado</b></i> framework's operations. This is a global option.<br><br><b>--help, -h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the main help message for <i><b>avocado</b></i>, or if followed by a subcommand, the help for that specific subcommand.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints the version of the Avocado framework that <i><b>avo</b></i> is invoking.<br><br>


title: DESCRIPTION
content:
<i><b>avo</b></i> is a convenience script provided by the Avocado Test Framework, acting as a direct shortcut to the <i><b>avocado</b></i> command. It allows users to invoke any <i><b>avocado</b></i> subcommand (e.g., <i><b>avocado run</b></i>, <i><b>avocado list</b></i>, <i><b>avocado plugins</b></i>) by simply typing <i><b>avo</b></i> followed by the desired subcommand and its arguments. This provides a quicker way to interact with the framework without having to type 'avocado' repeatedly.<br><br>Functionally, <i><b>avo</b></i> behaves identically to <i><b>avocado</b></i>, passing all arguments directly to the main <i><b>avocado</b></i> executable. It's particularly useful for frequent users and scripting, streamlining the execution of test cases, managing plugins, or querying framework information. The underlying <i><b>avocado</b></i> framework is a comprehensive, open-source testing solution designed for robust automation of test suites, commonly used in Linux system validation.


title: CAVEATS
content:
<i><b>avo</b></i> is not a standalone utility but a simple wrapper script for the <i><b>avocado</b></i> test framework. Its existence and behavior are entirely dependent on the installation and functionality of the <i><b>avocado</b></i> command. All command-line parsing and option handling are performed by <i><b>avocado</b></i> itself, not by <i><b>avo</b></i>. Therefore, any errors or unexpected behavior encountered when using <i><b>avo</b></i> typically originate from the underlying <i><b>avocado</b></i> command.<br><br>Users seeking comprehensive documentation on specific options and subcommands should refer to the official <i><b>avocado</b></i> documentation and its man page (<i><b>man avocado</b></i>).


title: PURPOSE OF <I><B>AVO</B></I>
content:
<i><b>avo</b></i> serves purely as a typing shortcut. It is functionally identical to invoking <i><b>avocado</b></i> directly. This is a common pattern in command-line interfaces to improve user experience for frequent users by minimizing keystrokes.


title: INSTALLATION
content:
<i><b>avo</b></i> becomes available automatically when the <i><b>avocado</b></i> test framework is installed on a system. It is typically part of the framework's executable scripts and is not a separate package that needs to be installed independently.


title: HISTORY
content:
The <i><b>avo</b></i> script was introduced as a convenience alias within the <i><b>avocado-framework</b></i> project. Its primary purpose is to simplify command-line interaction for users frequently using <i><b>avocado</b></i> by reducing typing and providing a shorter, more memorable entry point. It reflects a common practice in command-line tool design where a concise alias is provided for a longer, more descriptive command name. Its development is tied directly to the evolution and adoption of the <i><b>avocado</b></i> test framework itself, which gained prominence in Linux system validation and open-source testing communities.


title: SYNOPSIS
content:
<i>avrdude</i> <i>[options]</i><br><br>Example usage:<br><code>avrdude -p <b>m328p</b> -c <b>arduino</b> -P <b>/dev/ttyUSB0</b> -b <b>115200</b> -U <b>flash:w:firmware.hex:i</b></code><br>This command programs an ATmega328P using an Arduino-compatible programmer on <code>/dev/ttyUSB0</code> at 115200 baud, writing the <code>firmware.hex</code> file to flash memory in Intel Hex format.


title: PARAMETERS
content:
<b>-p <partno></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the microcontroller part number (e.g., <b>m328p</b>, <b>attiny85</b>).<br><br><b>-c <programmer-id></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the programmer ID (e.g., <b>usbasp</b>, <b>arduino</b>, <b>stk500v2</b>).<br><br><b>-P <port></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the port where the programmer is connected (e.g., <b>/dev/ttyUSB0</b>, <b>com1</b>, <b>usb</b>).<br><br><b>-b <baudrate></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Override the programmer's default serial port baud rate (e.g., <b>115200</b>).<br><br><b>-U <memtype>:r|w|v:<filename>[:format]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Memory operation: <b>r</b>ead, <b>w</b>rite, <b>v</b>erify. <i>memtype</i> can be <b>flash</b>, <b>eeprom</b>, <b>fuse</b>, <b>lock</b>, etc. <i>format</i> can be <b>i</b> (Intel Hex) or <b>h</b> (raw binary).<br><br><b>-F</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Override signature check. Use with caution as it can lead to programming the wrong device.<br><br><b>-e</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Perform a chip erase cycle before programming. This is often done implicitly during flash writes but can be forced.<br><br><b>-V</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not verify after writing memory. This skips the verification step for faster programming, but is less safe.<br><br><b>-q</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Quiet mode. Suppress output messages, except for errors.<br><br><b>-v</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Verbose mode. Increase verbosity level. Can be repeated (e.g., <b>-vvvv</b>) for more detailed output.<br><br><b>-t</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enter terminal mode, allowing direct communication with the programmer and chip.<br><br><b>-D</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disable auto erase for flash memory. Useful when you only want to write certain parts.<br><br><b>-C <config-file></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify an alternative or additional configuration file to load instead of or in addition to the default.<br><br><b>-B <bitclock></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the bit clock period for ISP protocol in microseconds (e.g., <b>1.0</b> for 1MHz SCL). Lower values mean faster programming.<br><br><b>-O</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not attempt to reset the AVR at the beginning of the session. Useful for specific programmer setups.<br><br>


title: DESCRIPTION
content:
<i>avrdude</i> is a powerful, open-source command-line utility designed to program Atmel AVR microcontrollers. It supports a wide range of AVR devices and various programming hardware (programmers) including ISP, JTAG, and HVSP. Users can upload compiled firmware (hex files) to the microcontroller's flash memory, read data from flash or EEPROM, verify content, and manipulate fuse bits and lock bits. It acts as the bridge between your computer and the AVR chip, making it an essential tool for embedded systems development, particularly in the Arduino ecosystem where it's used behind the scenes. Its flexibility allows for both simple firmware uploads and complex low-level chip configuration.


title: CAVEATS
content:
<b>Incorrect Configuration:</b> Using wrong part numbers, programmer IDs, or fuse settings can permanently damage (brick) your microcontroller. Always double-check your configuration.<br><b>Port Permissions:</b> On Linux, programming often requires access to serial or USB ports, which may necessitate adding your user to groups like <i>dialout</i> or <i>uucp</i>, or running <i>avrdude</i> with <i>sudo</i> (not recommended for routine use due to security).<br><b>Timing Issues:</b> ISP programming speed (bitclock) can be sensitive. If programming fails, try adjusting the <b>-B</b> option to a larger value (slower speed).<br><b>Configuration File Complexity:</b> The <i>avrdude.conf</i> file, which defines all supported programmers and devices, can be complex to modify or troubleshoot.


title: MEMORY TYPES FOR -U OPTION
content:
When using the <b>-U</b> (memory operation) option, <i>memtype</i> specifies the type of memory or register to operate on. Common types include:<br><b>flash</b>: Main program memory.<br><b>eeprom</b>: Electrically Erasable Programmable Read-Only Memory.<br><b>fuse</b> (or <b>lfuse</b>, <b>hfuse</b>, <b>efuse</b>): Configuration bits that control fundamental chip behavior (e.g., clock source, brown-out detection).<br><b>lock</b>: Lock bits that prevent unauthorized reading or writing of the chip's memory.<br><b>signature</b>: Unique device signature bytes.<br><b>calibration</b>: Internal oscillator calibration bytes.


title: <I>AVRDUDE.CONF</I> CONFIGURATION FILE
content:
<i>avrdude</i> relies heavily on its configuration file, typically named <i>avrdude.conf</i>. This file defines all supported AVR microcontrollers (with their memory maps, fuse bits, and signatures) and all supported programming hardware (programmers), including their communication protocols and capabilities. <i>avrdude</i> looks for this file in standard system locations (e.g., <i>/etc/avrdude.conf</i>, <i>/usr/local/etc/avrdude.conf</i>) or can be specified with the <b>-C</b> option. Incorrect or outdated configuration files can lead to "device signature mismatch" errors or unsupported programmer messages.


title: HISTORY
content:
<i>avrdude</i> was originally developed by Brian Dean and released as part of the GNU AVR toolchain. It quickly became the de facto standard command-line utility for programming Atmel AVR microcontrollers due to its open-source nature, broad support for devices and programmers, and active community development. Its integration into development environments like the Arduino IDE has further cemented its role as an indispensable tool for hobbyists, educators, and professional embedded systems engineers worldwide. It continues to be maintained and updated to support new AVR devices and programming protocols.


title: SYNOPSIS
content:
<b>aws</b> <I>[options]</I> <I>&lt;command></I> <I>&lt;subcommand></I> <I>[parameters]</I><br><br><i>Example:</i><br><b>aws s3 ls</b><br><b>aws ec2 describe-instances --instance-ids i-1234567890abcdef0</b><br><b>aws lambda invoke --function-name MyFunction --payload '{"key":"value"}' output.json</b>


title: PARAMETERS
content:
<b>--region <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region to send the request to, overriding the default configured region.<br><br><b>--output <format></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the output format for command results. Common formats include <i>json</i>, <i>text</i>, <i>table</i>, and <i>yaml</i>.<br><br><b>--profile <profile_name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a specific named profile from the credentials file (~/.aws/credentials) or config file (~/.aws/config).<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Turns on debug logging, providing detailed information about the API request and response.<br><br><b>--no-paginate</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the automatic pagination of results for commands that return a large number of items.<br><br><b>--cli-input-json <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads input parameters from a JSON string or file instead of command-line arguments.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version of the AWS CLI currently installed.<br><br><b>--endpoint-url <url></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a custom endpoint URL to send the request to, useful for local testing or private endpoints.<br><br>


title: DESCRIPTION
content:
The `aws` command is the official command-line interface (CLI) for interacting with Amazon Web Services (AWS). It provides a unified tool to manage your AWS services from the terminal, enabling powerful automation and scripting capabilities. <br><br>With `aws`, users can perform operations such as creating and managing EC2 instances, uploading and downloading files from S3, configuring IAM roles, interacting with databases like RDS and DynamoDB, and orchestrating serverless functions with Lambda. It supports virtually all AWS services and their respective API operations.<br><br>Key features include consistent syntax across services, support for various output formats (JSON, text, table, YAML), automatic pagination for large result sets, and the ability to manage multiple AWS profiles. It simplifies cloud resource management, allowing developers and administrators to automate complex workflows and integrate AWS operations into their existing scripts and tools.


title: CAVEATS
content:
Using the `aws` command requires proper authentication and configuration (credentials and region). Incorrect usage, especially with commands that create, modify, or delete resources, can incur unexpected AWS costs. The vast number of services and subcommands means a significant learning curve to master its full potential. Output parsing for scripting can be complex, often requiring additional tools like `jq`.


title: CONFIGURATION AND CREDENTIALS
content:
Before using the `aws` command, you typically need to configure your AWS credentials and a default region. This is done using the <b>aws configure</b> command, which prompts you for your AWS Access Key ID, Secret Access Key, default region name, and default output format. These settings are stored in <i>~/.aws/credentials</i> and <i>~/.aws/config</i>.


title: SERVICE-SPECIFIC COMMANDS
content:
The `aws` command itself acts as a dispatcher. All specific AWS operations are nested under service commands (e.g., <b>s3</b>, <b>ec2</b>, <b>lambda</b>) and then further subcommands (e.g., <b>s3 cp</b>, <b>ec2 describe-instances</b>). The full list of available commands and subcommands for any service can be explored using the <b>aws help</b> command or by appending <b>help</b> to any command/subcommand (e.g., <b>aws s3 help</b>).


title: HISTORY
content:
The AWS CLI was initially released in November 2013, developed by Amazon Web Services to provide a unified and consistent command-line interface across its rapidly expanding suite of cloud services. Before its introduction, users often relied on separate, service-specific command-line tools or SDKs. The `aws` CLI consolidated these, offering a single executable for interacting with virtually every AWS API operation. Its development has been continuous, with frequent updates to support new AWS services, features, and enhancements, making it an indispensable tool for cloud administrators, developers, and DevOps professionals.


title: SYNOPSIS
content:
aws accessanalyzer <I>command</I> [<I>options</I>]<br><br>Examples:<br><i>aws accessanalyzer create-analyzer --analyzer-name MyOrgAnalyzer --type ORGANIZATION</i><br><i>aws accessanalyzer list-findings --analyzer-arn arn:aws:access-analyzer:us-east-1:123456789012:analyzer/MyOrgAnalyzer</i><br><i>aws accessanalyzer validate-policy --policy-type RESOURCE_POLICY --policy-document file://my-s3-policy.json</i>


title: PARAMETERS
content:
<b><b>Common AWS CLI Options</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;These are general options applicable across most AWS CLI commands, including `accessanalyzer` subcommands:<br><i>--region <I>value</I></i>: Specifies the AWS region to use for the command.<br><i>--output <I>value</I></i>: Sets the output format of the command (e.g., json, text, table).<br><i>--profile <I>value</I></i>: Uses a specific named profile from your credentials file.<br><i>--endpoint-url <I>value</I></i>: Overrides the default service endpoint URL.<br><br><b><b>accessanalyzer Subcommands</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The `accessanalyzer` service provides various subcommands to interact with the service. Each subcommand has its own specific options and arguments.<br><i>create-analyzer</i>: Creates an analyzer for your account or organization.<br><i>list-analyzers</i>: Retrieves a list of existing analyzers.<br><i>get-analyzer</i>: Retrieves detailed information about a specific analyzer.<br><i>delete-analyzer</i>: Deletes an analyzer.<br><i>start-resource-scan</i>: Initiates a scan of the policy of a specific resource.<br><i>list-findings</i>: Retrieves a list of access analyzer findings generated by an analyzer.<br><i>get-finding</i>: Retrieves detailed information about a specific finding.<br><i>update-findings</i>: Updates the status of findings (e.g., ACTIVE, ARCHIVED).<br><i>apply-archive-rule</i>: Applies an archive rule to an analyzer to automatically archive certain findings.<br><i>create-archive-rule</i>: Creates a new archive rule for an analyzer.<br><i>delete-archive-rule</i>: Deletes an archive rule.<br><i>validate-policy</i>: Validates an IAM policy against AWS Access Analyzer policy grammar and best practices, identifying potential security risks or errors.<br><br>


title: DESCRIPTION
content:
The `aws-accessanalyzer` (invoked as `aws accessanalyzer` via the AWS Command Line Interface) provides programmatic access to <I>AWS Access Analyzer</I>, a security service that helps you identify resources in your AWS accounts and organization that are shared with an external entity. It uses logic-based reasoning to analyze resource policies, such as IAM policies, S3 bucket policies, or KMS key policies, and generates findings that highlight unintended access. This enables you to proactively review and refine access to your resources, adhering to the principle of least privilege. The CLI allows you to create and manage analyzers, view and update findings, and integrate with your security workflows, enhancing your security posture and compliance.


title: CAVEATS
content:
Using `aws accessanalyzer` requires the <B>AWS CLI</B> to be installed and properly configured with AWS credentials. It also demands the necessary <B>IAM permissions</B> to perform Access Analyzer actions, typically related to `access-analyzer:*` permissions. Findings are generated asynchronously and may take some time to appear or update after resource policy changes. While Access Analyzer identifies potential unintended access, it does not prevent or remediate access directly; it only flags findings for review and action. The service has a free tier, but usage beyond that may incur costs.


title: ANALYZED RESOURCE TYPES
content:
Access Analyzer supports analyzing policies for various AWS resource types, helping to secure your cloud environment. These include:<br><i>Amazon S3 buckets</i><br><i>IAM roles and policies</i><br><i>AWS KMS keys</i><br><i>Amazon SQS queues</i><br><i>AWS Lambda functions</i><br><i>AWS Secrets Manager secrets</i><br><i>Amazon ECR repositories</i>


title: HOW ACCESS ANALYZER WORKS
content:
Access Analyzer uses <B>automated reasoning</B>, a form of mathematical logic, to determine all possible access paths to your resources. It doesn't rely on logs or actual traffic patterns. Instead, it mathematically analyzes the policies attached to resources (e.g., resource-based policies, IAM permission policies) to identify if any external entity (e.g., another AWS account, an anonymous user, or a public IP address) can access them. Findings are generated when such unintended access is detected, providing actionable insights into your security posture.


title: HISTORY
content:
AWS Access Analyzer was officially launched by Amazon Web Services at <B>re:Invent 2019</B> as a new security service. Its introduction aimed to provide customers with an automated, proactive tool to identify and fix unintended resource access, leveraging automated reasoning to go beyond traditional static policy analysis and provide precise security findings.


title: SEE ALSO
content:
aws configure(1), aws iam(1), aws s3api(1), aws cloudtrail(1), aws securityhub(1), aws organizations(1)


title: SYNOPSIS
content:
The `<b>aws acm</b>` command itself acts as a gateway to various ACM operations. Its general syntax is:<br><i><b>aws acm &lt;subcommand&gt; [ &lt;options&gt; ]</b></i><br><br>Examples of common subcommands include:<br><ul><li>`<b>aws acm request-certificate</b>`: To request a new public SSL/TLS certificate.</li><li>`<b>aws acm list-certificates</b>`: To list all certificates in your account.</li><li>`<b>aws acm delete-certificate</b>`: To remove a certificate.</li><li>`<b>aws acm describe-certificate</b>`: To get detailed information about a specific certificate.</li></ul>


title: PARAMETERS
content:
<b>--region <i>&lt;region-name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region to operate in (e.g., <i>us-east-1</i>). Overrides environment variables or configuration files.<br><br><b>--output <i>&lt;format&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format (e.g., <i>json</i>, <i>text</i>, <i>table</i>).<br><br><b>--profile <i>&lt;profile-name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a specific named profile from your credential file.<br><br><b>--cli-input-json <i>&lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads arguments from the specified JSON string or path to a JSON file.<br><br><b>--generate-cli-skeleton</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a JSON skeleton for parameters to an operation, which can be used with <i>--cli-input-json</i> for complex inputs.<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Turns on debug logging, providing detailed information about the execution.<br><br><b>--no-paginate</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables pagination for commands that support it, returning all results in a single call rather than multiple API requests.<br><br><b>--query <i>&lt;jmespath-expression&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters and transforms the output of a command using a JMESPath expression, allowing precise data extraction.<br><br><b><i>--domain-name &lt;string&gt;</i> (example for <i>request-certificate</i>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The fully qualified domain name (FQDN) for which the certificate is being requested. (Specific to `request-certificate`).<br><br><b><i>--validation-method &lt;string&gt;</i> (example for <i>request-certificate</i>)</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The method used to validate ownership of the domain (<i>DNS</i> or <i>EMAIL</i>). (Specific to `request-certificate`).<br><br>


title: DESCRIPTION
content:
AWS Certificate Manager (ACM) is an AWS service for provisioning, managing, and deploying public and private SSL/TLS certificates. The `<b>aws acm</b>` command group, part of the AWS Command Line Interface (CLI), provides a powerful way to interact with ACM programmatically from your terminal. It allows users to automate tasks such as requesting new SSL/TLS certificates, listing existing certificates, importing third-party certificates, deleting certificates, and managing certificate tags. This command group is essential for DevOps engineers and system administrators who manage infrastructure on AWS, enabling seamless integration into CI/CD pipelines and scripting for certificate lifecycle management. It abstracts the underlying API calls, providing a user-friendly interface to a critical security service.


title: CAVEATS
content:
<ul><li><b>AWS CLI Installation:</b> The `<b>aws acm</b>` commands require the AWS CLI to be installed and configured correctly with appropriate AWS credentials and default region.</li><li><b>IAM Permissions:</b> Users must have the necessary AWS Identity and Access Management (IAM) permissions for specific ACM actions (e.g., `acm:RequestCertificate`, `acm:ListCertificates`). Without sufficient permissions, operations will fail with access denied errors.</li><li><b>Service Limits:</b> AWS ACM has service quotas (e.g., maximum number of certificates per account). Exceeding these limits will result in API errors.</li><li><b>Certificate Validation:</b> Domain validation (DNS or Email) is a crucial step for public certificates. Operations might hang or fail if validation is not completed successfully within the required timeframe by the domain owner.</li></ul>


title: CONFIGURATION
content:
The AWS CLI can be configured globally or per profile using the `<b>aws configure</b>` command. This sets up default region, output format, and credentials. These settings can be overridden by command-line parameters or environment variables for specific commands.


title: CREDENTIAL MANAGEMENT
content:
AWS credentials (Access Key ID and Secret Access Key) are typically stored securely in `<b>~/.aws/credentials</b>`, and configuration settings in `<b>~/.aws/config</b>`. For enhanced security and ease of management, it is highly recommended to use IAM roles for EC2 instances and other AWS services when running `<b>aws acm</b>` commands.


title: OUTPUT FILTERING AND TRANSFORMATION
content:
The `<b>--query</b>` option, leveraging JMESPath expressions, is an extremely powerful feature for extracting specific data from the JSON output of `<b>aws acm</b>` commands. This is invaluable for scripting, automation, and integrating AWS CLI output into other tools or processes.


title: SEE ALSO
content:
aws(1): The main AWS CLI command, which all service-specific commands are subcommands of., aws s3(1): AWS CLI commands for interacting with Amazon S3 storage service., aws ec2(1): AWS CLI commands for managing Amazon Elastic Compute Cloud (EC2) instances., jq(1): A lightweight and flexible command-line JSON processor, commonly used to parse and manipulate output from the AWS CLI.


title: SYNOPSIS
content:
The `aws acm-pca` command is invoked as a subcommand of the main `aws` command, followed by a specific action and its respective parameters.<br><br><b>Syntax:</b><br><I>aws acm-pca &lt;action&gt; [options] [global-options]</I><br><br><b>Examples of common actions:</b><br>&nbsp;&nbsp;`aws acm-pca create-certificate-authority --type ROOT --key-algorithm RSA_2048 ...`<br>&nbsp;&nbsp;`aws acm-pca issue-certificate --certificate-authority-arn &lt;ARN&gt; --csr &lt;CSR_path&gt; ...`<br>&nbsp;&nbsp;`aws acm-pca list-certificate-authorities`


title: PARAMETERS
content:
<b>create-certificate-authority</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new private certificate authority (CA) in ACM PCA. Requires specifying CA type (ROOT or SUBORDINATE), key algorithm, signing algorithm, and subject information.<br><br><b>describe-certificate-authority</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves detailed information about a specific private certificate authority, identified by its ARN.<br><br><b>list-certificate-authorities</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all private certificate authorities associated with your AWS account, along with their status and ARNs.<br><br><b>issue-certificate</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Issues a private X.509 certificate using a specified CA. Requires a Certificate Signing Request (CSR), validity period, and certificate usage details.<br><br><b>revoke-certificate</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Revokes a previously issued private certificate, effectively invalidating it from its associated Certificate Authority Revocation List (CRL).<br><br><b>get-certificate</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves an issued certificate or its certificate chain by its ARN.<br><br><b>update-certificate-authority</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Modifies the configuration of an existing private certificate authority, such as its revocation configuration or status.<br><br>


title: DESCRIPTION
content:
The `aws-acm-pca` command, more accurately referred to as `<b>aws acm-pca</b>`, is a subcommand within the <I>AWS Command Line Interface</I> (CLI). It serves as the primary interface for programmatically interacting with <I>AWS Certificate Manager Private Certificate Authority</I> (ACM PCA). ACM PCA is a fully managed service that allows organizations to create, deploy, and manage their own private certificate authorities (CAs) without the operational overhead of maintaining on-premises PKI infrastructure.<br><br>Through `aws acm-pca`, users can perform a wide range of operations, including creating and configuring private CAs, issuing and revoking X.509 certificates for internal use (e.g., for internal servers, applications, or devices), and managing certificate templates and permissions. It integrates seamlessly with other AWS services that require private trust, enabling automated certificate lifecycle management within the AWS ecosystem. Proper functioning requires the AWS CLI to be installed and configured with appropriate AWS credentials and IAM permissions.


title: CAVEATS
content:
Using `aws acm-pca` requires a correctly installed and configured <I>AWS Command Line Interface</I> (CLI). Operations performed via this command interact with cloud resources and may incur AWS service charges. Users must have appropriate <I>AWS Identity and Access Management</I> (IAM) permissions to execute specific ACM PCA actions. Network connectivity to the AWS endpoint is essential for all operations. A fundamental understanding of <I>Public Key Infrastructure</I> (PKI) concepts, such as Certificate Authorities, X.509 certificates, and revocation, is highly beneficial for effective use.


title: AUTHENTICATION & AUTHORIZATION
content:
All `aws acm-pca` commands require valid AWS credentials, typically configured via `<b>aws configure</b>` or environment variables. Access to specific ACM PCA actions is governed by <I>AWS Identity and Access Management</I> (IAM) policies. Users must ensure their IAM roles or users have the necessary permissions (e.g., `acm-pca:IssueCertificate`, `acm-pca:CreateCertificateAuthority`) to perform desired operations on private CAs.


title: OUTPUT FORMATS
content:
The `aws` CLI, including `aws acm-pca` subcommands, supports various output formats using the global `--output` option. Common formats include `<b>json</b>` (default for programmatic use), `<b>text</b>` (tab-separated values, useful for scripting), and `<b>yaml</b>`. This flexibility allows users to easily integrate `aws acm-pca` command outputs into scripts and automation workflows.


title: HISTORY
content:
AWS Certificate Manager Private Certificate Authority (ACM PCA) was launched by AWS in July 2018, providing a fully managed service for private CAs. The `aws acm-pca` subcommand was subsequently integrated into the <I>AWS Command Line Interface</I> (CLI) as part of its continuous development to support new AWS services. Its evolution is directly tied to the development of the ACM PCA service itself, with regular updates to the AWS CLI ensuring compatibility with the latest features, API versions, and best practices for managing private trust infrastructure within AWS environments.


title: SYNOPSIS
content:
<b>amplify</b> <i><command></i> [<i><subcommand></i>] [<i><options></i>]<br>The <b>amplify</b> CLI operates by specifying a primary command, often followed by a subcommand that defines the specific action to be performed on your Amplify project.


title: PARAMETERS
content:
<b>init</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Initializes</i> a new Amplify project in your local directory and guides you through setting up AWS backend resources.<br><br><b>add <i><category></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Adds</i> a new cloud service <i>category</i> (e.g., <b>Auth</b>, <b>API</b>, <b>Storage</b>, <b>Hosting</b>) to your project, prompting for configuration details.<br><br><b>push</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Deploys</i> local backend changes (added or modified categories) to the AWS cloud, provisioning or updating resources.<br><br><b>pull</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Pulls</i> the latest backend environment changes from the cloud to your local project, updating configurations and resource definitions.<br><br><b>status</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays</i> the current status of your local and cloud backend resources, highlighting pending changes.<br><br><b>delete</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Deletes</i> the entire Amplify project and all associated cloud resources. This action is irreversible.<br><br><b>console</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Opens</i> the AWS Amplify Console for the current project in your default web browser, providing a GUI for managing your application.<br><br><b>configure</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Configures</i> a new or existing AWS profile for the Amplify CLI, allowing you to link your CLI to an AWS account.<br><br><b>help [<i><command></i>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Displays</i> help information for the <b>amplify</b> command or a specific subcommand (e.g., <b>amplify help add</b>).<br><br>


title: DESCRIPTION
content:
The AWS Amplify CLI (<b>amplify</b>) is a command-line toolchain designed to help developers build, configure, and deploy scalable mobile and web applications powered by Amazon Web Services. It simplifies the process of integrating cloud services like authentication, data storage, APIs, and hosting into front-end applications.<br><br>The CLI provides a guided workflow to provision and manage AWS backend resources directly from the developer's local environment, syncing changes to the cloud. It supports popular JavaScript frameworks such as React, Angular, Vue, and Next.js, as well as mobile platforms, enabling rapid full-stack serverless development. Developers can add various 'categories' of cloud services, manage multiple deployment environments, and automate their development workflow.


title: CAVEATS
content:
The <b>amplify</b> command is not a native Linux utility; it requires Node.js and npm/yarn for installation and execution. Operations like <b>amplify push</b> and <b>amplify delete</b> directly provision, modify, or remove cloud resources in your AWS account, incurring costs and potentially irreversible data loss; always use with caution. It also requires an active AWS account and configured AWS credentials to interact with cloud services.


title: INSTALLATION
content:
The <b>amplify</b> CLI is typically installed globally using Node.js package managers: <br><code>npm install -g @aws-amplify/cli</code><br>or<br><code>yarn global add @aws-amplify/cli</code><br>Prior to installation, ensure Node.js (LTS version recommended) and npm/yarn are installed on your system.


title: CORE CONCEPTS
content:
Amplify projects are structured around 'categories' (e.g., Auth, API, Storage, Analytics) which represent different AWS backend services. Developers can manage multiple 'environments' (e.g., <i>dev</i>, <i>staging</i>, <i>prod</i>) within a single project, allowing for isolated development and deployment stages.


title: HISTORY
content:
AWS Amplify was launched in 2017 as a framework and toolchain aimed at simplifying full-stack serverless application development for front-end developers. The Amplify CLI has continuously evolved alongside the AWS Amplify framework, adding support for new AWS services, front-end frameworks, and development workflows. It has become a cornerstone for building scalable and secure web and mobile applications on AWS by abstracting away much of the complexity of direct AWS service integration.


title: PARAMETERS
content:
<b><b>Common AWS CLI Global Options:</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;These options apply globally to all AWS CLI commands, including <i>aws backup</i>.<br><br><b><i>--region &lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region to send the request to (e.g., <i>us-east-1</i>).<br><br><b><i>--output &lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Determines the output format (e.g., <i>json</i>, <i>text</i>, <i>table</i>).<br><br><b><i>--profile &lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a specific named profile from your credentials file.<br><br><b><i>--endpoint-url &lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a custom endpoint for the service.<br><br><b><i>--debug</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Turns on debug logging for detailed request/response information.<br><br><b><b>AWS Backup Subcommand-Specific Parameters:</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The <i>aws backup</i> command operates via specific subcommands, each with its own set of parameters. These parameters define the resource, configuration, or filters for the operation.<br>For a comprehensive list of subcommands and their parameters, refer to the official AWS CLI documentation for the Backup service.<br><br><b><i>&lt;subcommand&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A required argument specifying the AWS Backup operation (e.g., <i>create-backup-plan</i>, <i>list-backup-jobs</i>, <i>start-restore-job</i>, <i>get-backup-vault</i>).<br><br><b><i>--backup-plan-name &lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with subcommands like <i>create-backup-plan</i> to specify the name of the backup plan.<br><br><b><i>--backup-vault-name &lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the name of the backup vault for operations like <i>create-backup-vault</i> or when interacting with recovery points.<br><br><b><i>--recovery-point-arn &lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Required for restore operations to identify the specific recovery point to restore from.<br><br><b><i>--max-results &lt;integer&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Commonly used for pagination in list operations to limit the number of items returned per call.<br><br><b><i>--next-token &lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used in conjunction with <i>--max-results</i> for paginating through large result sets in list operations.<br><br>


title: DESCRIPTION
content:
The `aws-backup` command does not exist as a standalone Linux utility. Instead, the AWS Backup service is managed and interacted with programmatically through the <b>AWS Command Line Interface (CLI)</b>, using the `aws backup` subcommand. <br><br>AWS Backup is a fully managed, centralized backup service provided by Amazon Web Services. It simplifies the process of backing up application data across various AWS services (like Amazon EC2, EBS, RDS, DynamoDB, EFS, FSx, and Storage Gateway) and on-premises resources. <br><br>The `aws backup` command provides a powerful interface for automating data protection tasks. Users can define and manage backup plans, create backup vaults, initiate on-demand backups, perform data restorations, and monitor backup and restore jobs. It enables organizations to establish consistent backup policies, enforce data retention requirements, and meet compliance objectives without needing to develop custom solutions for each service. This centralized approach significantly reduces operational overhead and enhances data resilience.


title: CAVEATS
content:
<ul><li>Requires the <b>AWS CLI</b> to be installed and configured with appropriate credentials and region.</li><li>Operations are subject to <b>IAM permissions</b>; the AWS identity (user or role) executing the command must have sufficient permissions for the requested AWS Backup actions.</li><li>Understanding AWS Backup concepts (backup plans, rules, vaults, recovery points, jobs) is crucial for effective use.</li><li>Network connectivity to AWS API endpoints is required.</li><li>Errors can sometimes be non-descriptive; using the <i>--debug</i> option can provide more insights.</li></ul>


title: INSTALLATION AND CONFIGURATION
content:
To use <i>aws backup</i>, you first need to install the <b>AWS CLI</b>. It can be installed using `pip` (Python package manager) or platform-specific installers. After installation, configure your AWS credentials and default region using `aws configure` to authenticate your commands against your AWS account.


title: COMMON USE CASES
content:
The <i>aws backup</i> command is widely used for:<br><ul><li>Automating daily/weekly/monthly backups of critical AWS resources.</li><li>Implementing disaster recovery strategies by restoring data to new instances or regions.</li><li>Enforcing data retention policies to meet compliance requirements.</li><li>Scripting backup and restore operations as part of CI/CD pipelines or operational runbooks.</li><li>Monitoring the status and history of all backup and restore jobs centrally.</li></ul>


title: HISTORY
content:
The AWS Backup service was launched by Amazon Web Services in January 2019, aiming to provide a centralized and automated backup solution for various AWS services. Concurrently, the <i>aws backup</i> subcommand was integrated into the <b>AWS Command Line Interface (CLI)</b> to allow programmatic access to the new service's APIs. Since its inception, AWS Backup and its CLI interface have continuously evolved, adding support for more AWS services, new backup and restore capabilities, and enhanced features like cross-region and cross-account backup. Its development has focused on simplifying and standardizing data protection strategies across the AWS ecosystem.


title: SYNOPSIS
content:
The `<b>aws batch</b>` functionality is accessed via the `<b>aws</b>` command.<br><br>General syntax for AWS CLI `<b>batch</b>` subcommands:<br>`<b>aws batch <<i>subcommand</i>> [<i>options</i>] [<i>arguments</i>]</b>`<br><br>Common `<b>batch</b>` subcommands include:<br>`<b>aws batch describe-job-queues --query 'jobQueues[*].jobQueueName'</b>`<br>`<b>aws batch submit-job --job-name <i>my-job</i> --job-queue <i>my-queue</i> --job-definition <i>my-job-def</i></b>`<br>`<b>aws batch terminate-job --job-id <i>job-id-string</i> --reason "<i>reason-for-termination</i>"</b>`


title: PARAMETERS
content:
<b><i>General AWS CLI Global Options (apply to most `<b>aws batch</b>` commands)</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>These options specify overall CLI behavior or target specific AWS configurations.</i><br><br><b>`<b>--region <<i>region-name</i>></b>`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specifies the AWS region (e.g., `<b>us-east-1</b>`) to which the command applies.</i><br><br><b>`<b>--output <<i>format</i>></b>`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Defines the output format (e.g., `<b>json</b>`, `<b>text</b>`, `<b>table</b>`).</i><br><br><b>`<b>--profile <<i>profile-name</i>></b>`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Uses a specific named profile from your AWS credentials file.</i><br><br><b><i>Examples of `<b>aws batch</b>` Subcommand-Specific Parameters</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Parameters are unique to each `<b>aws batch</b>` subcommand. Below are common examples. Use `<b>aws batch <subcommand> help</b>` for full details.</i><br><br><b>`<b>--job-name <<i>string</i>></b>`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Used with `<b>submit-job</b>`) The name of the job to be submitted.</i><br><br><b>`<b>--job-queue <<i>string</i>></b>`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Used with `<b>submit-job</b>`) The ARN or name of the job queue where the job will be submitted.</i><br><br><b>`<b>--job-definition <<i>string</i>></b>`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Used with `<b>submit-job</b>`) The ARN or name of the job definition that describes the job's configuration.</i><br><br><b>`<b>--compute-environment-name <<i>string</i>></b>`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Used with `<b>create-compute-environment</b>`) A unique name for the new compute environment.</i><br><br><b>`<b>--state <<i>string</i>></b>`</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>(Used with `<b>describe-job-queues</b>`) Filters returned job queues based on their state (e.g., `<b>VALID</b>`, `<b>INVALID</b>`).</i><br><br>


title: DESCRIPTION
content:
<i>aws-batch</i> is not a standalone Linux command. Instead, it refers to the `<b>batch</b>` <i>subcommand</i> within the `<b>aws</b>` <i>Command Line Interface (CLI)</i>, which provides a unified tool to manage your Amazon Web Services (AWS) resources and services directly from your terminal.<br><br>AWS Batch is a fully managed service that enables developers, scientists, and engineers to easily and efficiently run hundreds of thousands of batch computing jobs on AWS. It dynamically provisions the optimal quantity and type of compute resources (e.g., EC2 instances, Spot Instances, Fargate) based on the volume and specific resource requirements of the jobs you submit. It plans, schedules, and executes your batch computing workloads.<br><br>Through the `<b>aws batch</b>` CLI, users can define job queues, compute environments, job definitions, and then submit, monitor, and manage their batch jobs. This allows for automation of workflows, processing large datasets, performing high-throughput computations, and more, without needing to manage the underlying infrastructure.


title: CAVEATS
content:
<i>aws-batch</i> refers to the `<b>aws batch</b>` CLI functionality, which is not a standalone executable. It requires the `<b>AWS CLI</b>` to be installed and configured with appropriate AWS credentials.<br><br>Using AWS Batch incurs costs based on the underlying AWS resources (EC2 instances, EBS volumes, Fargate, etc.) that it provisions.<br><br>Proper `<b>IAM permissions</b>` are crucial for interacting with AWS Batch resources. Users or roles need specific permissions (e.g., `<b>batch:SubmitJob</b>`, `<b>batch:DescribeJobs</b>`) to perform operations.


title: FINDING HELP FOR AWS CLI BATCH COMMANDS
content:
<i>To discover all available `<b>aws batch</b>` subcommands and their specific parameters, you can use the `<b>help</b>` option with the `<b>aws</b>` command:<br>`<b>aws batch help</b>` - Shows all `<b>batch</b>` subcommands.<br>`<b>aws batch <<i>subcommand</i>> help</b>` - Shows options and arguments for a specific subcommand, e.g., `<b>aws batch submit-job help</b>`.<br>This provides detailed documentation directly in your terminal.</i>


title: HISTORY
content:
AWS Batch was first announced by Amazon Web Services in `<b>February 2017</b>`, aiming to provide a fully managed service for batch computing workloads. Before its introduction, users had to manually provision and manage compute clusters using services like EC2 and orchestrate jobs with custom scripts or open-source schedulers. AWS Batch streamlined this process by offering integrated job scheduling, resource provisioning, and scaling capabilities. Its development focused on abstracting infrastructure management, allowing users to concentrate on their application logic. Over time, it has integrated with other AWS services like Fargate for serverless container execution and expanded its capabilities for various workload types.


title: SEE ALSO
content:
<b>aws(1)</b><i>: The main AWS CLI command.</i>, <b>aws ec2(1)</b><i>: For managing Elastic Compute Cloud instances, often the underlying compute for Batch.</i>, <b>aws ecs(1)</b><i>: For managing Elastic Container Service, which AWS Batch uses for container orchestration.</i>, <b>aws logs(1)</b><i>: For interacting with CloudWatch Logs, where Batch job logs are often sent.</i>


title: PARAMETERS
content:
<b><i>COMMAND</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the action to perform, e.g., <b>get-costs</b> to retrieve cost data, <b>get-usage</b> for usage data, or <b>list-budgets</b> to view defined budgets.<br><br><b>--start-date <i><YYYY-MM-DD></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the inclusive start date for the cost or usage report. Typically required for time-series queries.<br><br><b>--end-date <i><YYYY-MM-DD></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the inclusive end date for the cost or usage report. Typically required for time-series queries.<br><br><b>--granularity <i><DAILY|MONTHLY|HOURLY></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the aggregation level for the data. Common defaults include <b>MONTHLY</b> or <b>DAILY</b>.<br><br><b>--group-by <i><DIMENSION[:KEY]></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Groups results by one or more specified dimensions (e.g., <b>SERVICE</b>, <b>ACCOUNT</b>, <b>REGION</b>, <b>TAG:<i>TagName</i></b>). Can often be used multiple times.<br><br><b>--filter <i><JSON_EXPRESSION></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies specific filters to narrow down the cost data based on dimensions or tags, often using a JSON-formatted expression that mimics AWS CE filter structures.<br><br><b>--metrics <i><AMORTIZED_COST|BLENDED_COST|UNBLENDED_COST|USAGE_QUANTITY></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the cost or usage metric(s) to retrieve. Can be a comma-separated list. Default is usually <b>UNBLENDED_COST</b>.<br><br><b>--output <i><text|json|table></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Determines the format of the output. <b>text</b> or <b>table</b> are common for readability, while <b>json</b> is useful for scripting.<br><br><b>--profile <i><PROFILE_NAME></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS CLI profile to use for authentication and configuration, overriding the default.<br><br><b>--region <i><REGION_NAME></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region for API calls, although AWS Cost Explorer is a global service.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message or usage information for the specific implementation of the command.<br><br>


title: DESCRIPTION
content:
The command <i>aws-ce</i> is <b>not a standard Linux utility</b> distributed with operating systems. It is commonly used as a conceptual representation or a custom shell script/alias to interact with AWS Cost Explorer (CE). Its purpose is to provide a simplified command-line interface to retrieve, filter, and analyze AWS cost and usage data.<br><br>While its exact implementation varies greatly from user to user or organization to organization, a typical <i>aws-ce</i> command would wrap complex <i>aws ce</i> CLI commands. This abstraction allows users to automate routine cost reporting, monitor spending against budgets, or quickly investigate cost trends without navigating the AWS Management Console.<br><br>A well-designed <i>aws-ce</i> script aims to streamline workflows by abstracting away the intricacies of AWS API calls, enabling users to specify parameters like time ranges, granularity, grouping dimensions, and filters using concise syntax. It might also offer various output formats for easy integration with other command-line tools like <i>jq</i> for further data processing or custom reporting.


title: CAVEATS
content:
The command <i>aws-ce</i> is <b>not a standard Linux command</b>. Its existence, functionality, and specific options depend entirely on whether a user or organization has created it as a custom script, alias, or function. Therefore, its behavior can vary significantly.<br><br><b>Limitations:</b><br><ul><li>Requires the AWS CLI to be installed and configured with valid credentials (e.g., via <i>aws configure</i>).</li><li>The configured AWS identity (user or role) must have appropriate IAM permissions to access AWS Cost Explorer (e.g., <i>ce:GetCostAndUsage</i>).</li><li>Subject to AWS API rate limits and potential costs associated with data retrieval, especially for large date ranges or granular data.</li><li>Performance can vary depending on the data volume and complexity of the query.</li></ul>


title: CONFIGURATION
content:
Before attempting to use an <i>aws-ce</i> command, ensure that the AWS CLI is installed and configured with appropriate credentials and a default region. This setup is typically performed using the <i>aws configure</i> command. The <i>aws-ce</i> script will leverage these underlying AWS CLI configurations for authentication and region targeting.


title: IAM PERMISSIONS
content:
For any <i>aws-ce</i> command to successfully retrieve data from AWS Cost Explorer, the AWS identity (IAM user or role) specified in your AWS CLI configuration must possess sufficient IAM permissions. The most crucial permission is <i>ce:GetCostAndUsage</i>. Depending on the script's specific capabilities, additional permissions such as <i>ce:GetDimensionValues</i>, <i>ce:GetRightsizingRecommendation</i>, or <i>ce:GetReservationUtilization</i> might also be required.


title: HISTORY
content:
The conceptual '<i>aws-ce</i>' command likely emerged from the practical necessity to streamline AWS cost management on the command line. As AWS environments grew in complexity and the official <i>aws ce</i> CLI commands became more verbose for detailed queries, developers and operations teams sought simpler ways to access cost data. This led to the creation of custom shell scripts, aliases, or wrapper functions to encapsulate the lengthy AWS CLI calls, providing a more intuitive and concise interface for common cost analysis tasks. This pattern of creating user-friendly wrappers for complex cloud APIs is a common practice to enhance efficiency and reduce the operational burden in cloud environments.


title: SYNOPSIS
content:
<B>aws cloud9</B> <I>&lt;subcommand&gt;</I> [<i>options</i>] [<i>parameters</i>]<br><br>Common Subcommands:<br>  <B>aws cloud9 create-environment-ec2</B> <I>--name &lt;string&gt; --instance-type &lt;string&gt;</I> [<i>options</i>]<br>  <B>aws cloud9 describe-environments</B> [<i>--environment-ids &lt;string&gt;...</i>] [<i>options</i>]<br>  <B>aws cloud9 delete-environment</B> <I>--environment-id &lt;string&gt;</I> [<i>options</i>]<br>  <B>aws cloud9 list-environments</B> [<i>options</i>]<br>  <B>aws cloud9 update-environment</B> <I>--environment-id &lt;string&gt;</I> [<i>options</i>]<br><br>Generic AWS CLI Options (applicable to most commands):<br>  <B>--region</B> <I>&lt;string&gt;</I><br>  <B>--output</B> <I>&lt;string&gt;</I> (json, text, table)<br>  <B>--query</B> <I>&lt;string&gt;</I><br>  <B>--profile</B> <I>&lt;string&gt;</I>


title: PARAMETERS
content:
<b><B>--environment-id</B> <I>&lt;string&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the unique ID of an existing AWS Cloud9 development environment. This is required for commands like <I>describe-environments</I>, <I>delete-environment</I>, and <I>update-environment</I>.<br><br><b><B>--name</B> <I>&lt;string&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name to assign to a new AWS Cloud9 development environment. This is a required parameter for the <I>create-environment-ec2</I> subcommand.<br><br><b><B>--instance-type</B> <I>&lt;string&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the Amazon EC2 instance type (e.g., <I>t2.micro</I>, <I>m5.large</I>) that will power the new Cloud9 environment. Required for <I>create-environment-ec2</I>.<br><br><b><B>--description</B> <I>&lt;string&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A user-friendly description for the Cloud9 development environment. Can be used with <I>create-environment-ec2</I> and <I>update-environment</I>.<br><br><b><B>--owner-arn</B> <I>&lt;string&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The Amazon Resource Name (ARN) of the user who owns the environment. Optional for <I>create-environment-ec2</I>.<br><br><b><B>--subnet-id</B> <I>&lt;string&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The ID of the VPC subnet in which to launch the EC2 instance for the environment. Optional for <I>create-environment-ec2</I>.<br><br><b><B>--tags</B> <I>Key=string,Value=string ...</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A list of key-value pairs to apply as tags to the environment and its associated resources. Used with <I>create-environment-ec2</I>.<br><br>


title: DESCRIPTION
content:
The command "aws-cloud9" typically refers to the functionality provided for AWS Cloud9 via the <I>aws</I> Command Line Interface (CLI), specifically as the subcommand <B>aws cloud9</B>. AWS Cloud9 is a cloud-based integrated development environment (IDE) that allows users to write, run, and debug code directly from a web browser. It includes a code editor, debugger, and terminal.<br><br>The <B>aws cloud9</B> CLI commands empower users and administrators to programmatically manage their Cloud9 development environments. This includes creating new environments, listing existing ones, describing their detailed properties, updating configurations, and deleting them. It's a critical tool for automating environment provisioning, integrating Cloud9 into CI/CD pipelines, or performing bulk operations on multiple environments without manual console interaction.<br><br>To use this command, the AWS CLI must be installed and configured with appropriate AWS credentials and IAM permissions.


title: CAVEATS
content:
Using the <B>aws cloud9</B> commands necessitates a correctly installed and configured AWS CLI with appropriate IAM permissions. Without the necessary permissions (e.g., <I>cloud9:CreateEnvironmentEC2</I>, <I>cloud9:DeleteEnvironment</I>), commands will fail with 'Access Denied' errors.<br><br>Creating Cloud9 environments provisions underlying AWS resources, primarily EC2 instances, which incur costs. It is crucial to monitor usage and delete environments when they are no longer needed to prevent unexpected charges. The available options and required parameters vary significantly depending on the specific subcommand being used.


title: SUBCOMMAND SPECIFICITY
content:
It's important to understand that <B>aws cloud9</B> is not a single executable command, but rather a namespace within the AWS CLI. All operations are performed via specific subcommands (e.g., <I>create-environment-ec2</I>, <I>describe-environments</I>). Each subcommand has its own unique set of required and optional parameters, and users should consult the official AWS CLI documentation for the most accurate and detailed information on each specific operation.


title: OPENING AN ENVIRONMENT
content:
While <B>aws cloud9</B> commands are excellent for managing environments, directly 'opening' an environment in a browser from the CLI is typically handled differently. The <B>aws cloud9 open-environment</B> command can generate a temporary URL, but in many workflows, users will simply access environments through the AWS Management Console after creation, or integrate with single sign-on solutions for direct access.


title: HISTORY
content:
AWS Cloud9 originated as Cloud9 IDE, an independent cloud-based development environment company. Amazon Web Services (AWS) acquired Cloud9 IDE in 2016, subsequently integrating it into its suite of developer tools and officially launching it as an AWS service in December 2017. Following this integration, the <B>aws cloud9</B> subcommands were introduced within the AWS CLI, providing a robust programmatic interface for managing Cloud9 environments. Its evolution continues in tandem with the AWS Cloud9 service, receiving updates and new features through AWS CLI releases.


title: PARAMETERS
content:
<b>create-stack</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provisions a new CloudFormation stack based on a specified template and parameters. This command initiates the creation of resources defined in the template.<br><br><b>update-stack</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Updates an existing CloudFormation stack. You can provide a new template or new parameter values to modify the stack's resources. This is often used with change sets.<br><br><b>delete-stack</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes a CloudFormation stack and all the resources contained within it. Use with caution as this action is irreversible for the resources.<br><br><b>describe-stacks</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves detailed information about one or more CloudFormation stacks, including their status, outputs, and parameters. Useful for checking the state of your deployments.<br><br><b>list-stacks</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides a summary list of all CloudFormation stacks in the current region, offering a quick overview of your deployed infrastructure.<br><br><b>validate-template</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Checks a CloudFormation template for syntax and semantic errors. This is a valuable command for pre-deployment validation to catch issues early.<br><br><b>create-change-set</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates a change set, which is a summary of proposed changes to a stack. It allows you to preview how an update will affect your running resources before applying it.<br><br><b>execute-change-set</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a pending change set to a stack, initiating the actual update of the stack's resources as defined in the change set.<br><br><b>delete-change-set</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes a change set. This is often done after executing a change set or if you decide not to proceed with the proposed changes.<br><br><b>create-stack-set</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a stack set, which allows you to deploy and manage a common CloudFormation template across multiple AWS accounts and regions from a single operation.<br><br>


title: DESCRIPTION
content:
The <b>aws cloudformation</b> command is part of the AWS Command Line Interface (CLI), providing a powerful interface to AWS CloudFormation, a service that enables you to model, provision, and manage AWS resources as code. Instead of manually provisioning resources, you define your infrastructure in templates (YAML or JSON) and let CloudFormation create and manage them. This command allows you to interact directly with the CloudFormation service from your terminal, enabling automation of stack creation, updates, and deletions, viewing stack events, and managing stack sets. It is crucial for implementing Infrastructure as Code (IaC) best practices within AWS environments, facilitating version control, repeatability, and consistent deployments across different environments.


title: CAVEATS
content:
<b>Permissions:</b> The AWS IAM user or role executing CloudFormation commands must have sufficient permissions for CloudFormation itself and for all the AWS resources that the stack intends to create, modify, or delete.<br><br><b>Template Syntax:</b> CloudFormation templates must adhere strictly to YAML or JSON syntax. Even minor errors can cause stack creation or update failures.<br><br><b>Rollbacks:</b> CloudFormation automatically attempts to roll back to the last known good state if stack creation or update fails. While helpful, incomplete rollbacks can sometimes leave orphaned resources or a stack in a <I>ROLLBACK_FAILED</I> state.<br><br><b>Resource Limits:</b> Be aware of AWS service quotas and limits for the resources you are provisioning. CloudFormation operations can hit these limits, especially during large deployments.<br><br><b>Drift Detection:</b> CloudFormation stacks can experience 'drift' if resources are manually modified outside of CloudFormation. Regularly use <I>detect-stack-drift</I> to identify these discrepancies.


title: CLOUDFORMATION TEMPLATES
content:
CloudFormation operations are driven by templates, which are plain-text files written in YAML or JSON. These templates declaratively define the AWS resources (e.g., EC2 instances, S3 buckets, RDS databases) you want to provision, along with their configurations, dependencies, and outputs. They form the blueprint for your AWS infrastructure.


title: STACKS VS. STACK SETS
content:
A <b>stack</b> is a single instance of a CloudFormation template deployed in a specific AWS account and region. A <b>stack set</b>, on the other hand, allows you to deploy and manage a common CloudFormation template across multiple AWS accounts and regions from a single operation. Stack sets are ideal for centralized management of compliance, security, or common services across an organization.


title: CHANGE SETS FOR SAFE UPDATES
content:
Before applying an update to an existing stack, it's highly recommended to create a <b>change set</b>. A change set summarizes the proposed changes that CloudFormation will make to your stack's resources. This 'dry run' capability helps you understand the impact of an update (e.g., which resources will be replaced, modified, or deleted) before executing it, significantly reducing the risk of unintended disruptions.


title: HISTORY
content:
AWS CloudFormation was launched by Amazon Web Services in 2011, establishing a foundational service for Infrastructure as Code (IaC) on the AWS platform. Its introduction significantly simplified the provisioning and management of complex AWS environments by allowing users to define their infrastructure in declarative templates. Over the years, AWS has continuously enhanced CloudFormation with features like nested stacks for modularity, change sets for safe updates, drift detection for configuration consistency, and stack sets for multi-account/multi-region deployments, solidifying its role as a core AWS management tool. The <b>aws cloudformation</b> CLI commands have evolved alongside the service, providing comprehensive programmatic control.


title: SYNOPSIS
content:
aws codeartifact <I>subcommand</I> [<I>options</I>]<br><br>Examples:<br><i>aws codeartifact create-domain --domain my-domain --encryption-key arn:aws:kms:us-east-1:123456789012:key/my-key</i><br><i>aws codeartifact get-authorization-token --domain my-domain --query authorizationToken --output text</i>


title: PARAMETERS
content:
<b>create-domain</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a CodeArtifact domain.<br><br><b>delete-domain</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes a CodeArtifact domain.<br><br><b>list-domains</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all CodeArtifact domains in the account.<br><br><b>create-repository</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a repository within a domain.<br><br><b>delete-repository</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes a CodeArtifact repository.<br><br><b>list-repositories</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists repositories within a CodeArtifact domain.<br><br><b>get-authorization-token</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates a temporary authentication token for package managers.<br><br><b>list-packages</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists packages in a specified repository.<br><br><b>list-package-versions</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists versions for a specific package.<br><br><b>copy-package-versions</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Copies package versions between repositories.<br><br><b>update-package-versions-status</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Updates the status (e.g., Published, Archived, Deleted) of package versions.<br><br><b>get-repository-endpoint</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves the endpoint URL for a specific repository.<br><br><b>describe-domain</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides detailed information about a CodeArtifact domain.<br><br><b>describe-repository</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides detailed information about a CodeArtifact repository.<br><br><b>describe-package-version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides detailed information about a specific package version.<br><br><b>put-domain-permissions-policy</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attaches a resource policy to a CodeArtifact domain.<br><br><b>put-repository-permissions-policy</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attaches a resource policy to a CodeArtifact repository.<br><br>


title: DESCRIPTION
content:
The <i>aws-codeartifact</i> command is a subcommand of the AWS Command Line Interface (CLI) that provides direct interaction with the AWS CodeArtifact service. It allows users to programmatically manage various aspects of their CodeArtifact resources, including creating and managing domains and repositories, administering package versions, generating authentication tokens for package managers, and configuring access policies.<br><br>This tool is essential for automating build and deployment pipelines that involve artifact management within AWS environments, enabling secure and scalable storage and retrieval of software dependencies and outputs. It integrates seamlessly with popular package managers like npm, pip, Maven, and NuGet, streamlining the development workflow by providing a central, secure repository for all software artifacts, enhancing software supply chain security and compliance.


title: CAVEATS
content:
Requires AWS CLI installation and proper IAM configuration with necessary permissions.<br>Authentication tokens from <i>get-authorization-token</i> are temporary (default 12 hours) and need periodic renewal.<br>Operations are region-specific; ensure the correct AWS region is configured.<br>Usage incurs costs for storage and data transfer within CodeArtifact.<br>Access control relies heavily on IAM and resource policies, requiring careful management.


title: <B>AUTHENTICATION WITH PACKAGE MANAGERS</B>
content:
To use CodeArtifact with package managers (npm, pip, Maven, NuGet), first obtain an authentication token using the <i>get-authorization-token</i> subcommand. This token is then configured with your package manager to allow publishing or consuming packages from CodeArtifact repositories.


title: <B>DOMAINS AND REPOSITORIES STRUCTURE</B>
content:
CodeArtifact organizes packages within <i>domains</i>, which are logical groupings of repositories. Each domain has an associated Amazon S3 bucket for storage. <i>Repositories</i> reside within domains and are where packages are actually stored. This structure allows for granular control over access and retention.


title: <B>UPSTREAMS AND EXTERNAL CONNECTIONS</B>
content:
Repositories can be configured with <i>upstreams</i> to fetch packages from other CodeArtifact repositories within the same domain or from public registries. <i>External connections</i> allow repositories to connect to specific public registries, caching packages on demand and ensuring consistent access to public dependencies.


title: HISTORY
content:
AWS CodeArtifact was launched by Amazon Web Services in June 2020. Its development aimed to provide a fully managed artifact repository service, addressing the need for secure, scalable, and centralized storage for software packages within cloud-native development workflows. Before CodeArtifact, developers often used third-party or self-hosted artifact managers. CodeArtifact simplifies artifact management, integrates seamlessly with existing AWS services and popular package managers, and offers enterprise-grade security and governance for software supply chains.


title: SYNOPSIS
content:
<i>(This command is primarily invoked by Git; users configure it via <B>git config</B>.)</i><br><B>git config --global credential.helper '!aws codecommit credential-helper $@'</B><br><br><i>(When Git invokes the helper, it typically uses one of the following operations, supplying details via standard input:)</i><br><B>aws-codecommit get</B><br><B>aws-codecommit store</B><br><B>aws-codecommit erase</B>


title: PARAMETERS
content:
<b><B>get</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs the helper to retrieve credentials. Git sends details (e.g., protocol, host, path) via standard input, and the helper outputs a username and password (an IAM token) if successful.<br><br><b><B>store</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs the helper to store credentials. For CodeCommit, this operation usually doesn't 'store' anything persistently but confirms successful credential generation.<br><br><b><B>erase</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Instructs the helper to erase credentials. For CodeCommit, this typically clears any cached temporary credentials.<br><br>


title: DESCRIPTION
content:
The <B>aws-codecommit</B> command, typically referring to the Git credential helper functionality provided by the AWS Command Line Interface (CLI), enables seamless and secure authentication with AWS CodeCommit repositories. Instead of manually handling Git usernames and passwords or SSH keys, this helper automates the authentication process by transparently leveraging AWS credentials configured for the AWS CLI (e.g., IAM user access keys, temporary security credentials from roles, or SSO).<br><br>When Git requires authentication for an HTTPS operation against an AWS CodeCommit repository, it invokes this helper. The helper then exchanges the configured AWS credentials for a temporary Git username and password (which is an AWS IAM temporary token). This token is valid for a limited time and is automatically refreshed as needed, significantly streamlining the developer workflow and enhancing security by avoiding long-lived static credentials in Git configurations.<br><br>It's important to note that <B>aws-codecommit</B> is not a standalone Git client but an intermediary invoked by Git behind the scenes, ensuring that standard Git commands like <B>git clone</B>, <B>git push</B>, and <B>git pull</B> work effortlessly with CodeCommit.


title: CAVEATS
content:
This helper requires the AWS Command Line Interface (AWS CLI) to be installed and configured with valid AWS credentials. It primarily supports HTTPS Git connections; SSH connections to CodeCommit use SSH keys directly. Ensure your AWS CLI configuration has permissions to access CodeCommit repositories (e.g., <B>codecommit:GitPull</B>, <B>codecommit:GitPush</B>).


title: CONFIGURATION
content:
To use the <B>aws-codecommit</B> helper, you typically configure Git globally. The command <B>git config --global credential.helper '!aws codecommit credential-helper $@'</B> tells Git to use the AWS CLI's CodeCommit credential helper for all repositories. Alternatively, you can configure it per-repository by omitting the <B>--global</B> flag.


title: UNDERLYING MECHANISM
content:
When Git needs credentials, it calls the configured helper (<B>aws codecommit credential-helper</B>). This helper then uses the AWS CLI to communicate with AWS IAM to request temporary credentials (an IAM user ARN as username and a unique password/token). This token is then provided back to Git for authentication over HTTPS. This process ensures that sensitive AWS credentials are not stored directly in Git's credential store.


title: HISTORY
content:
The need for simplified Git authentication with AWS CodeCommit led to the development of this credential helper by AWS. It was introduced to address the complexities of managing standard Git credentials or SSH keys for cloud-hosted repositories, aligning with the AWS CLI's philosophy of making AWS services easily accessible from the command line. Its evolution tracks closely with updates to the AWS CLI itself, enhancing security and usability over time.


title: SYNOPSIS
content:
<b>aws cognito-idp</b> <i>&lt;subcommand&gt;</i> [<i>&lt;parameters&gt;</i>] [<i>&lt;global-options&gt;</i>]<br><br><i>Example:</i> <b>aws cognito-idp list-user-pools --max-results 10 --region us-east-1</b>


title: PARAMETERS
content:
<b><i>&lt;subcommand&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the API operation to perform (e.g., <i>create-user-pool</i>, <i>admin-get-user</i>, <i>list-users</i>). Each subcommand has its own specific parameters.<br><br><b><b>--region</b> <i>&lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region to send the request to (e.g., <i>us-east-1</i>).<br><br><b><b>--output</b> <i>&lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the output format of the command (e.g., <i>json</i>, <i>text</i>, <i>table</i>).<br><br><b><b>--profile</b> <i>&lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a specific named profile from your credential file.<br><br><b><b>--endpoint-url</b> <i>&lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overrides the default service endpoint URL for Cognito IdP.<br><br><b><b>--no-paginate</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables pagination for commands that return a large number of items, fetching all results in one go.<br><br><b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Turns on debug logging, providing detailed information about the CLI execution and API calls.<br><br><b><b>--color</b> <i>&lt;on|off|auto&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Controls colored output for the CLI.<br><br><b><b>--cli-input-json</b> <i>&lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads command arguments from a provided JSON string or file.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version of the AWS CLI currently installed.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays help for the command or a specific subcommand, detailing available options and usage.<br><br>


title: DESCRIPTION
content:
The <b>aws cognito-idp</b> command is a crucial component of the AWS Command Line Interface (CLI), providing direct programmatic access to the Amazon Cognito Identity Provider (IdP) service APIs. Amazon Cognito IdP is a fully managed service that enables developers to add user sign-up, sign-in, and access control to their web and mobile applications. It supports both user directories (<i>User Pools</i>) for managing application users and integration with external identity providers (like Facebook, Google, or SAML/OIDC).<br><br>Through the <b>aws cognito-idp</b> command, administrators and developers can perform a wide range of operations, including creating and managing user pools, handling individual users within pools (e.g., creating, updating, deleting users, resetting passwords, confirming sign-ups), configuring identity providers, and managing user pool clients. It's an indispensable tool for automating Cognito management tasks, integrating with CI/CD pipelines, and scripting complex user management workflows.


title: CAVEATS
content:
The <b>aws cognito-idp</b> command requires the AWS CLI to be <i>installed and properly configured</i> with valid AWS credentials (via <b>aws configure</b> or environment variables).<br><i>Internet connectivity</i> is essential for communicating with AWS services.<br>Performing actions via this command demands <i>appropriate IAM permissions</i> for the Cognito service; unauthorized actions will result in access denied errors.<br><i>Destructive operations</i> (like deleting user pools or users) are generally irreversible and should be handled with extreme caution.<br>Compatibility with newer Cognito features may require an <i>updated AWS CLI version</i>.


title: FINDING SUBCOMMANDS AND THEIR PARAMETERS
content:
To explore all available subcommands under <b>aws cognito-idp</b>, execute <b>aws cognito-idp help</b>. For detailed information and specific parameters of any subcommand, use <b>aws cognito-idp</b> <i>&lt;subcommand&gt;</i> <b>help</b> (e.g., <b>aws cognito-idp admin-create-user help</b>).


title: COMMON USE CASES
content:
Common applications of the <b>aws cognito-idp</b> command include automating user provisioning and de-provisioning, scripting user migration from existing systems into Cognito, performing batch operations on users (such as confirming unconfirmed users), integrating Cognito management into CI/CD pipelines for infrastructure as code, and troubleshooting user authentication and profile issues.


title: HISTORY
content:
The AWS Command Line Interface (CLI) was initially launched in <i>late 2012 / early 2013</i>, providing a unified tool for managing AWS services. Amazon Cognito was first introduced in <i>2014</i>, with its User Pools feature (which `cognito-idp` primarily manages) gaining prominence around <i>2016</i>. The <b>aws cognito-idp</b> command was subsequently integrated into the AWS CLI to offer comprehensive command-line control over these new and evolving Cognito Identity Provider capabilities, becoming an indispensable utility for developers and administrators automating user management and authentication workflows.


title: SYNOPSIS
content:
<i><br>Since 'aws-cur' is not a standard Linux command, a universal synopsis cannot be provided. Its syntax would be defined by the creator of the custom script or tool.<br></i>


title: DESCRIPTION
content:
The command 'aws-cur' is <b>not a standard, pre-installed utility</b> found in common Linux distributions or official AWS CLI packages. Unlike commands such as <code>ls</code> or <code>grep</code>, it is not part of a standard operating system installation. If encountered, it almost certainly refers to a <b>custom-developed shell script, a specific internal utility within an organization, or a niche third-party tool</b> designed to interact with Amazon Web Services (AWS) Cost and Usage Reports (CUR). Due to its non-standard nature, its specific functionality, command-line syntax, and available options are entirely dependent on its particular implementation. This means that an 'aws-cur' script created by one user could behave completely differently from one created by another, making a universal description impossible. Its purpose would generally revolve around automating tasks related to fetching, processing, or analyzing AWS billing and usage data provided through the CUR service.


title: CAVEATS
content:
<i><br>The primary caveat is that 'aws-cur' is not a universally recognized or supported command. Its behavior, reliability, security, and maintenance would solely depend on its specific source and implementation. Users should exercise caution and understand its origin before executing any such script. Its absence from official documentation means troubleshooting or support would be limited.<br></i>


title: CUSTOM SCRIPTING AND NICHE TOOLS
content:
<i><br>The name 'aws-cur' strongly suggests a purpose related to AWS Cost and Usage Reports. Users frequently develop custom shell scripts, Python scripts, or other utilities to automate the process of downloading, parsing, analyzing, or summarizing CUR data stored in Amazon S3. Such a custom command might handle tasks like:<br><br><ul><li>Listing available CURs in an S3 bucket or retrieving manifest files.</li><li>Downloading specific CUR data files (which can be very large).</li><li>Processing large CUR files to extract billing insights, identify cost drivers, or calculate chargebacks.</li><li>Integrating with other reporting tools or data visualization platforms.</li><li>Automating report generation and distribution.</li></ul><br>If you encounter 'aws-cur', it's crucial to consult its source code or any accompanying documentation (if available) to understand its precise functionality, any dependencies it might have (e.g., specific AWS CLI configurations, Python libraries), and how to use it effectively and safely.<br></i>


title: HISTORY
content:
<i><br>As 'aws-cur' is not a standard Linux command or a widely adopted open-source project, there is no documented public development history. Any 'history' would pertain to specific private or niche implementations created by individuals or organizations to fulfill their particular AWS Cost and Usage Report processing needs.<br></i>


title: SEE ALSO
content:
aws(1): The official AWS Command Line Interface, which interacts with various AWS services, including AWS Cost Explorer (<code>aws ce</code>) for cost management and billing (<code>aws billing</code>)., jq(1): A lightweight and flexible command-line JSON processor, often used to parse output from AWS CLI commands or JSON-formatted CUR manifests., grep(1): A powerful pattern-matching tool, useful for filtering lines within CUR data files, which are often in text or CSV format., awk(1): A versatile text processing language, suitable for extracting and manipulating data from CSV or TSV formatted CUR files, enabling custom aggregations and transformations.


title: SYNOPSIS
content:
The <i><b>aws ecr</b></i> command is a subcommand of the main <i><b>aws</b></i> CLI tool. Its general synopsis is:<br><br><i><b>aws ecr</b></i> <I>command</I> [<I>options</I>]<br><br>Where <I>command</I> represents an ECR specific action (e.g., <i><b>create-repository</b></i>, <i><b>get-login-password</b></i>, <i><b>list-images</b></i>), and <I>options</I> are parameters specific to that ECR subcommand, or global AWS CLI options.


title: PARAMETERS
content:
<b>--region <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region to send the request to (e.g., us-east-1).<br><br><b>--output <format></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format (e.g., <i><b>json</b></i>, <i><b>text</b></i>, <i><b>table</b></i>) for the command's response.<br><br><b>--profile <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the named profile to use from your AWS credentials file.<br><br><b>--cli-input-json <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads arguments from a JSON string provided as a value or file path.<br><br><b>--endpoint-url <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the endpoint URL to use for the ECR service.<br><br><b>--no-verify-ssl</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables SSL certificate verification for the request.<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Turn on debug logging, providing detailed request/response information.<br><br><b><subcommand-specific-parameters></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Each <i><b>aws ecr</b></i> subcommand has its own set of specific parameters (e.g., <i><b>--repository-name</b></i> for <i><b>create-repository</b></i>, <i><b>--image-ids</b></i> for <i><b>batch-delete-image</b></i>).<br><br>


title: DESCRIPTION
content:
Amazon Elastic Container Registry (ECR) is a fully-managed Docker container registry that makes it easy for developers to store, manage, and deploy Docker container images. The <i><b>aws ecr</b></i> command line interface (as part of the <i><b>aws</b></i> CLI) allows users to programmatically interact with ECR.<br><br>It provides functionalities such as creating and managing repositories, pushing and pulling images, setting repository policies, and managing lifecycle rules. <i><b>aws ecr</b></i> integrates seamlessly with other AWS services like ECS, EKS, Fargate, and Lambda, enabling a streamlined container workflow from development to production. Users leverage <i><b>aws ecr</b></i> to automate container image management tasks, secure image storage, and enforce access controls within the AWS ecosystem.


title: CAVEATS
content:
<ul><li><b>Authentication and Permissions</b>: Requires valid AWS credentials configured via <i><b>aws configure</b></i> or environment variables. The IAM user/role must have appropriate ECR permissions to perform desired actions.</li><li><b>Region Specificity</b>: ECR repositories are region-specific. Ensure the correct <i><b>--region</b></i> is used or configured, as operations in one region will not affect repositories in another.</li><li><b>Docker Integration</b>: Pushing/pulling images requires Docker installed and correctly configured to authenticate with ECR. This typically involves using <i><b>aws ecr get-login-password</b></i> to obtain a temporary Docker login token.</li><li><b>Image Lifecycle Management</b>: While powerful, setting up ECR lifecycle policies (e.g., for automated image cleanup) requires careful planning and testing to avoid unintended deletion of critical images.</li></ul>


title: DOCKER LOGIN WORKFLOW
content:
To push or pull images from an ECR repository, your Docker client needs to be authenticated. The standard and recommended approach is to use the <i><b>aws ecr get-login-password</b></i> command to retrieve a temporary authorization token, which is then piped to Docker's login command:<br><br><i><b>aws ecr get-login-password --region &lt;your-region&gt; | docker login --username AWS --password-stdin &lt;your-account-id&gt;.dkr.ecr.&lt;your-region&gt;.amazonaws.com</b></i><br><br>This command provides a secure, short-lived credential for Docker.


title: COMMON ECR SUBCOMMANDS
content:
Some frequently used <i><b>aws ecr</b></i> subcommands include:<br><ul><li><i><b>create-repository</b></i>: Creates a new ECR repository.</li><li><i><b>describe-repositories</b></i>: Lists and describes existing ECR repositories.</li><li><i><b>list-images</b></i>: Lists images within a specified repository.</li><li><i><b>delete-repository</b></i>: Deletes an ECR repository (can be forced to delete non-empty repos).</li><li><i><b>batch-delete-image</b></i>: Deletes one or more images from a repository by image digest or tag.</li><li><i><b>put-image</b></i>: Uploads a manifest for a Docker image.</li><li><i><b>put-lifecycle-policy</b></i>: Creates or updates the lifecycle policy for a repository.</li></ul>


title: HISTORY
content:
Amazon Elastic Container Registry (ECR) was launched by AWS in December 2015, providing a fully managed Docker container registry service. The <i><b>aws ecr</b></i> command-line interface became an integral part of the AWS CLI tool, allowing developers to manage ECR resources programmatically. The AWS CLI itself has been under continuous development since its initial release, with <i><b>ecr</b></i> commands evolving alongside new ECR features like image scanning, pull-through caching, and cross-region replication. Its robust set of commands makes it indispensable for automating container image workflows in CI/CD pipelines on AWS.


title: SEE ALSO
content:
aws(1): The main AWS Command Line Interface tool., aws configure(1): Used to configure AWS credentials and default settings., docker(1): Docker command-line utility for building, tagging, pushing, and pulling container images., docker login(1): Authenticate Docker client to a private registry., aws sts get-caller-identity(1): Verify the current AWS identity and account being used.


title: SYNOPSIS
content:
<b>aws eks</b> <i>&lt;subcommand&gt;</i> [<i>options</i>]<br><br>Examples of common EKS subcommands:<br>&nbsp;&nbsp;&nbsp;&nbsp;<b>aws eks create-cluster</b> <i>--name</i> &lt;cluster-name&gt; <i>--version</i> &lt;k8s-version&gt; <i>--role-arn</i> &lt;iam-role-arn&gt; <i>--resources-vpc-config</i> 'subnetIds=[...],securityGroupIds=[...]'<br>&nbsp;&nbsp;&nbsp;&nbsp;<b>aws eks describe-cluster</b> <i>--name</i> &lt;cluster-name&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<b>aws eks list-clusters</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<b>aws eks update-kubeconfig</b> <i>--name</i> &lt;cluster-name&gt; <i>--region</i> &lt;aws-region&gt; <i>--alias</i> &lt;context-alias&gt;


title: PARAMETERS
content:
<b><i>--region</i> &lt;value&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region to operate in. Overrides environment variables or configured profiles.<br><br><b><i>--profile</i> &lt;value&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a specific named profile from your credential file (~/.aws/credentials) to authenticate.<br><br><b><i>--output</i> &lt;value&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Defines the output format: <b>json</b>, <b>text</b>, or <b>table</b>.<br><br><b><i>--name</i> &lt;value&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Common for EKS subcommands) Specifies the unique name of the EKS cluster or related resource.<br><br><b><i>--cluster-name</i> &lt;value&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Common for EKS subcommands) Specifies the name of the EKS cluster a resource (e.g., nodegroup, addon) belongs to.<br><br><b><i>--version</i> &lt;value&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;(For create-cluster) Specifies the Kubernetes version for the cluster (e.g., '1.28').<br><br><b><i>--role-arn</i> &lt;value&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;(For create-cluster, create-nodegroup) The Amazon Resource Name (ARN) of the IAM role to associate with the cluster or nodegroup.<br><br><b><i>--tags</i> &lt;key=value,key=value...&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;A list of key-value pairs to apply as tags to the EKS resource.<br><br><b><i>--instance-types</i> &lt;value&gt; [&lt;value&gt;...]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;(For create-nodegroup) A list of EC2 instance types to use for the node group.<br><br><b><i>--resources-vpc-config</i> &lt;json-string&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;(For create-cluster) Configuration details for the cluster's VPC, including subnet IDs and security group IDs.<br><br>


title: DESCRIPTION
content:
The <b>aws eks</b> command is a crucial part of the AWS Command Line Interface (CLI), specifically designed for interacting with and managing AWS Elastic Kubernetes Service (EKS). EKS is a managed service that makes it easy for you to run Kubernetes on AWS without needing to install, operate, and maintain your own Kubernetes control plane. <br><br>The <b>aws eks</b> command allows users to perform a wide range of operations related to EKS resources, including:<br><i>Creating and deleting EKS clusters</i><br><i>Managing node groups (EC2 instances that act as worker nodes)</i><br><i>Configuring Fargate profiles for serverless Kubernetes pods</i><br><i>Managing EKS Add-ons (e.g., VPC CNI, CoreDNS)</i><br><i>Updating Kubernetes versions for clusters</i><br><i>Describing existing clusters and other EKS resources</i><br><br>It provides a programmatic interface to the EKS API, enabling automation, scripting, and direct control over your Kubernetes infrastructure hosted on AWS.


title: CAVEATS
content:
<b>Prerequisites:</b> Requires the AWS CLI to be installed and configured with appropriate IAM credentials.<br><b>IAM Permissions:</b> Operations require specific AWS Identity and Access Management (IAM) permissions for EKS, EC2, VPC, S3, and other related services. Incorrect permissions will lead to 'Access Denied' errors.<br><b>Time-Consuming Operations:</b> Creating or deleting an EKS cluster, or updating its Kubernetes version, can take 10-20 minutes or longer.<br><b>Cost Implications:</b> Running EKS clusters incurs costs for the EKS control plane, EC2 instances (for worker nodes), EBS volumes, network traffic, and other AWS services.<br><b>Networking Complexity:</b> Proper VPC, subnet, and security group configuration is critical for EKS clusters to function correctly and securely.<br><b>Eventual Consistency:</b> Like many AWS services, EKS API calls may exhibit eventual consistency, meaning changes might not be immediately reflected across all systems.


title: AWS CLI CONFIGURATION
content:
Before using <b>aws eks</b>, ensure your AWS CLI is configured using <b>aws configure</b>. This sets up your default region and credentials, which the <b>aws eks</b> commands will use by default unless overridden by command-line options.


title: INTERACTING WITH THE CLUSTER (KUBECTL)
content:
While <b>aws eks</b> manages the EKS infrastructure, interacting <i>with the Kubernetes cluster itself</i> (e.g., deploying applications, checking pod status) requires <b>kubectl</b>. The <b>aws eks update-kubeconfig</b> command is essential for configuring <b>kubectl</b> to connect to your EKS cluster.


title: EKS COMPONENTS
content:
Understanding EKS involves knowing its main components: the <i>Control Plane</i> (managed by AWS), the <i>Data Plane</i> (your worker nodes, which can be EC2 instances in Node Groups or serverless Fargate pods), and <i>EKS Add-ons</i> (managed components for core Kubernetes functionalities like networking and DNS).


title: HISTORY
content:
AWS Elastic Kubernetes Service (EKS) was first announced at re:Invent 2017 and became generally available in June 2018. The <b>aws eks</b> command has evolved alongside the service, adding support for new features like Fargate profiles (launched in 2019), EKS Add-ons (launched in 2020), and various improvements to node group management. It is a continuously developed part of the broader AWS CLI, which aims to provide consistent and comprehensive access to AWS services via the command line.


title: SYNOPSIS
content:
<B>aws glue</B> <I>subcommand</I> [<I>options</I>]<br><br>Examples:<br>  <B>aws glue</B> <I>start-job-run</I> <B>--job-name</B> <I>"MyGlueJob"</I><br>  <B>aws glue</B> <I>get-job-runs</I> <B>--job-name</B> <I>"MyGlueJob"</I><br>  <B>aws glue</B> <I>create-job</I> <B>--name</B> <I>"NewJob"</I> <B>--role</B> <I>"arn:aws:iam::123456789012:role/GlueServiceRole"</I> <B>--command</B> <I>Type=PythonShell,ScriptLocation=s3://my-bucket/scripts/myscript.py</I>


title: PARAMETERS
content:
<b><I>subcommand</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS Glue API operation to perform. Examples include <B>create-job</B>, <B>start-job-run</B>, <B>get-table</B>, <B>get-databases</B>, <B>list-jobs</B>, etc. Each subcommand has its own specific set of required and optional parameters.<br><br><b><I>--job-name</I> <I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A common parameter used across many job-related subcommands (e.g., <B>start-job-run</B>, <B>get-job-runs</B>) to identify the target Glue job by its name.<br><br><b><I>--arguments</I> <I>json-map</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Provides key-value pairs of arguments to pass to a Glue job run. Used with <B>start-job-run</B> to customize job execution parameters.<br><br><b><I>--region</I> <I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region to which the command applies (e.g., <I>us-east-1</I>). Overrides the default region configured for the AWS CLI.<br><br><b><I>--output</I> <I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Determines the output format (e.g., <I>json</I>, <I>text</I>, <I>table</I>). Default is typically <I>json</I>.<br><br><b><I>--profile</I> <I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a specific named profile from your AWS credentials file. Useful for managing multiple AWS accounts or roles.<br><br><b><I>--query</I> <I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses JMESPath syntax to filter and transform the output of the command. Highly useful for parsing JSON responses.<br><br><b><I>--cli-input-json</I> <I>file://path/to/file.json</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads command input parameters from a specified JSON file. Useful for complex inputs or automation.<br><br>


title: DESCRIPTION
content:
The `aws glue` command is part of the AWS Command Line Interface (<B>AWS CLI</B>), providing a powerful and programmatic way to interact with <I>AWS Glue</I>, a fully managed extract, transform, and load (<B>ETL</B>) service. It enables users to perform a wide range of operations directly from their terminal or scripts.<br><br>Through `aws glue` subcommands, you can create, update, and delete Glue jobs (e.g., Spark, Python shell, Ray, Streaming ETL), manage job triggers and workflows, and interact with the Glue Data Catalog to define databases, tables, and partitions. It's essential for automating ETL processes, integrating with CI/CD pipelines, monitoring job runs, and managing connections and security configurations within the AWS Glue environment. This command-line interface offers fine-grained control over your data integration processes.


title: CAVEATS
content:
Using `aws glue` requires the <B>AWS CLI</B> to be properly installed and configured with valid AWS credentials and IAM permissions. Incorrect permissions can lead to 'Access Denied' errors. Users must have a good understanding of <I>AWS Glue</I> concepts (jobs, triggers, workflows, data catalog) to effectively use the commands. Be mindful of API rate limits, especially in automated scripts, and ensure network connectivity to AWS.<br><br>The exact parameters and their syntax vary significantly between subcommands; always refer to the official AWS CLI documentation for specific usage details.


title: INSTALLATION
content:
The `aws glue` command is part of the <B>AWS CLI v2</B>. It can be installed using various methods such as `pip` (for v1), dedicated installers for Linux, macOS, and Windows, or through package managers. For example, on Linux: <br>curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"<br>unzip awscliv2.zip<br>sudo ./aws/install


title: CONFIGURATION
content:
After installation, configure the <B>AWS CLI</B> with your credentials and preferred region using <B>aws configure</B>:<br>aws configure<br>AWS Access Key ID [None]: <I>YOUR_ACCESS_KEY_ID</I><br>AWS Secret Access Key [None]: <I>YOUR_SECRET_ACCESS_KEY</I><br>Default region name [None]: <I>your-preferred-region</I><br>Default output format [None]: <I>json</I><br>This setup allows `aws glue` commands to authenticate and operate correctly within your AWS account.


title: COMMON USE CASES
content:
Common use cases for `aws glue` include:<br>  <I>1.</I> Triggering Glue ETL jobs and monitoring their progress.<br>  <I>2.</I> Listing and inspecting existing Glue jobs, triggers, and workflows.<br>  <I>3.</I> Programmatically creating or updating Glue Data Catalog tables and partitions.<br>  <I>4.</I> Integrating Glue operations into CI/CD pipelines for automated deployments of ETL processes.


title: HISTORY
content:
AWS Glue was first announced and became generally available in August 2017, offering a serverless data integration service. The `aws glue` subcommand was subsequently integrated into the <B>AWS CLI</B> shortly after the service's launch, providing developers and administrators a powerful command-line interface to manage Glue resources. Since its inception, the `aws glue` command set has evolved alongside the Glue service, incorporating new features, job types (like Ray and Streaming ETL), and API enhancements to support the growing needs of data professionals.


title: SEE ALSO
content:
<B>aws</B>(1) - The main AWS CLI command., <B>jq</B>(1) - A lightweight and flexible command-line JSON processor, often used to parse output from AWS CLI commands., <B>sh</B>(1) / <B>bash</B>(1) - Standard Unix shell for scripting and automating AWS CLI commands.


title: SYNOPSIS
content:
<I>aws-google-auth</I> [<B>--profile</B> <I>PROFILE</I>] [<B>--role</B> <I>ROLE_ARN</I>] [<B>--sso-url</B> <I>URL</I>] [<B>--console</B>] [<B>--region</B> <I>REGION</I>] [<B>--force</B>] [<B>--clear-cache</B>] [<B>--headless</B>] [<B>--verbose</B>] [<B>--version</B>] [<B>--help</B>]


title: PARAMETERS
content:
<b>--profile <I>PROFILE</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS credential profile to update. If not provided, it defaults to the <B>default</B> profile.<br><br><b>--role <I>ROLE_ARN</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The ARN of the specific AWS role to assume. If omitted, the tool will present a list of available roles from the Google SSO page for selection.<br><br><b>--sso-url <I>URL</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overrides the default Google SSO URL used for authentication. This is typically the SAML endpoint configured in Google Workspace.<br><br><b>--console</b><br>&nbsp;&nbsp;&nbsp;&nbsp;After successful authentication, opens the AWS management console in your default web browser using the obtained temporary credentials.<br><br><b>--region <I>REGION</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region for the temporary credentials. This might be necessary if your SSO setup is region-specific or if you need to use credentials for a particular region.<br><br><b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces a re-authentication process even if valid cached credentials exist.<br><br><b>--clear-cache</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clears any cached Google session cookies and temporary AWS credentials.<br><br><b>--headless</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Runs the browser automation in headless mode (without a visible browser window). Requires a compatible WebDriver (e.g., ChromeDriver) installed.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose logging, providing more detailed output for debugging purposes.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version of the <I>aws-google-auth</I> tool.<br><br><b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the command's help message and exits.<br><br>


title: DESCRIPTION
content:
<I>aws-google-auth</I> is a Python utility that streamlines the authentication process for the AWS Command Line Interface (CLI) when an organization uses Google Workspace (formerly G Suite) for Identity Provider (IdP) based Single Sign-On (SSO) through SAML.<br><br>Instead of manually obtaining temporary AWS credentials from the AWS console, this tool automates the process. It simulates a browser-based login flow to Google, then navigates to the AWS SSO endpoint, retrieves temporary AWS Access Key ID, Secret Access Key, and Session Token. These credentials are then automatically stored in your <I>~/.aws/credentials</I> file, allowing subsequent AWS CLI commands to use these temporary credentials without requiring manual setup. This enhances security by using short-lived credentials and improves developer productivity by simplifying authentication.


title: CAVEATS
content:
Requires Python 3.6+ and associated dependencies.<br><br>A compatible web browser (like Chrome, Firefox) and its corresponding WebDriver (e.g., ChromeDriver, geckodriver) must be installed and accessible in your system's PATH, especially for headless mode.<br><br>The tool interacts with Google and AWS SSO pages, so changes to these pages' layouts or authentication flows by Google or AWS may temporarily break the tool until updated.<br><br>Your Google Workspace and AWS accounts must be properly configured for SAML-based SSO.<br><br>It relies on browser automation, which can sometimes be flaky due to network issues or dynamic web content.


title: CONFIGURATION FILE
content:
<I>aws-google-auth</I> can be configured using environment variables or a configuration file (e.g., <I>~/.aws/config</I> or a dedicated config file) to set default values for SSO URL, region, and other options, avoiding repetitive command-line arguments.


title: CACHING MECHANISM
content:
The tool implements a caching mechanism for both Google session cookies and AWS temporary credentials. This means that once you authenticate, subsequent runs within a configured session duration might not require re-logging into Google, speeding up credential refreshing.


title: BROWSER AUTOMATION
content:
It uses browser automation libraries (like Selenium WebDriver) to interact with the web pages, filling forms, and clicking buttons to complete the SSO flow. This requires a browser and its respective WebDriver to be installed on the system.


title: HISTORY
content:
<I>aws-google-auth</I> was developed as an open-source solution to address the growing need for simplified AWS CLI authentication within organizations leveraging Google Workspace for their identity management. Prior to tools like this, users often had to manually log into the AWS console via their IdP, obtain temporary credentials, and then configure them for the AWS CLI, a repetitive and error-prone process. The tool aims to automate this, improving developer workflow and promoting the use of short-lived credentials for enhanced security, reducing the risk associated with long-term static credentials. It gained traction in the cloud community for its specific focus on Google-AWS integration.


title: PARAMETERS
content:
<b><i>&lt;AWS_CLI_SERVICE&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of an AWS service (e.g., <i>s3</i>, <i>ec2</i>) for which to retrieve help documentation. If provided, the command will display help for that specific service.<br><br><b><i>&lt;AWS_CLI_COMMAND&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of a specific command within an AWS service (e.g., <i>ls</i> for <i>s3</i>, <i>run-instances</i> for <i>ec2</i>). This argument must be used in conjunction with an <i>&lt;AWS_CLI_SERVICE&gt;</i> to retrieve help for that particular operation.<br><br>


title: DESCRIPTION
content:
<i>aws-help</i> is typically a shell script or alias designed to simplify and expedite access to the extensive documentation of the AWS Command Line Interface (CLI). It serves as a user-friendly wrapper around the AWS CLI's native <b>help</b> subcommand. Instead of requiring users to remember the <i>aws &lt;service&gt; help</i> or <i>aws &lt;service&gt; &lt;command&gt; help</i> syntax, <i>aws-help</i> allows for a more direct approach, such as <i>aws-help s3</i> or <i>aws-help ec2 run-instances</i>.<br><br>This utility streamlines the process of retrieving command syntax, available options, and practical usage examples for various AWS services and their operations. By abstracting the standard <b>help</b> subcommand, <i>aws-help</i> aims to enhance productivity and make the process of looking up CLI documentation more intuitive and efficient for developers and administrators managing AWS resources from the terminal.


title: CAVEATS
content:
<i>aws-help</i> is typically a user-defined shell script or alias, not a part of the official AWS CLI distribution or a standard Linux utility. Therefore, its exact behavior and available options can vary significantly based on its specific implementation. It relies entirely on the presence and proper configuration of the AWS CLI tool on the system. Users should verify its source and implementation if encountering unexpected behavior. As it's a wrapper, it doesn't provide the help content itself but merely facilitates access to the AWS CLI's native documentation.


title: USAGE EXAMPLES
content:
<b><I>General AWS CLI Help:</I></b><br><i>aws-help</i><br>This command, when executed without arguments, will display the general help documentation for the AWS CLI, listing available top-level commands and global options.<br><br><b><I>Service-Specific Help:</I></b><br><i>aws-help s3</i><br>This example will show the help documentation specific to the Amazon S3 service, including all available S3 commands (e.g., <i>cp</i>, <i>ls</i>, <i>mb</i>, <i>rm</i>).<br><br><b><I>Command-Specific Help:</I></b><br><i>aws-help ec2 run-instances</i><br>This command will provide detailed help for the <i>run-instances</i> operation within the Amazon EC2 service, including its syntax, parameters, and examples.


title: HISTORY
content:
The <i>aws-help</i> command does not have a formal development history as it is not an official component of the AWS CLI or a standard Linux utility. It emerged as a common community-driven solution, often implemented as a simple shell alias or script by users and system administrators. Its purpose is to improve the user experience and efficiency of accessing AWS CLI documentation, which can otherwise require more verbose commands. Its usage reflects a practical need for quicker reference while interacting with AWS services via the command line.


title: PARAMETERS
content:
<b><b>-n</b> <i>&lt;number&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the last <i>&lt;number&gt;</i> of AWS CLI commands from the history.<br><br><b><b>-s</b> <i>&lt;service&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters the history to show only commands related to a specific AWS service (e.g., <i>ec2</i>, <i>s3</i>, <i>iam</i>).<br><br><b><b>-d</b> <i>&lt;date_range&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters commands by a specified date range or period (e.g., <i>today</i>, <i>last_hour</i>, <i>yyyy-mm-dd</i>).<br><br><b><b>-g</b> <i>&lt;pattern&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters commands that contain the specified <i>&lt;pattern&gt;</i>, similar to a <i>grep</i> operation.<br><br><b><b>-r</b> <i>&lt;index&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Re-executes a command from the displayed history by its numerical <i>&lt;index&gt;</i>. This option should be used with caution.<br><br><b><b>-u</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays only unique AWS CLI commands, suppressing duplicate entries.<br><br><b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows a help message and exits.<br><br>


title: DESCRIPTION
content:
The command <b>aws-history</b> is not a native or official command provided by the AWS Command Line Interface (CLI). Instead, it typically refers to a user-defined shell function, alias, or a custom script designed to track, display, and potentially re-execute previously run AWS CLI commands. Its primary purpose is to enhance productivity and auditability by providing an easy way to access a historical record of your interactions with AWS services via the CLI.<br><br>Implementations vary widely, but they commonly parse your shell's history file (e.g., <i>~/.bash_history</i> or <i>~/.zsh_history</i>) to extract lines starting with <i>'aws '</i>. More sophisticated versions might log commands to a dedicated file, add timestamps, user context, or integrate with session management. Benefits include quick re-execution of complex commands, understanding past actions for debugging or compliance, and serving as a learning aid for remembering common CLI patterns.


title: CAVEATS
content:
As <b>aws-history</b> is not an official command, its behavior and existence are entirely dependent on how an individual or organization has implemented it. Key limitations include:<br><i>1. Non-Standard:</i> It's not part of the official AWS CLI distribution, so its availability varies.<br><i>2. Implementation Dependent:</i> Functionality, options, and robustness differ significantly based on the underlying script or shell function.<br><i>3. Shell History Reliance:</i> Often relies on shell history, which can be truncated, not persistent across sessions, or not capture all AWS CLI invocations (e.g., from non-interactive scripts).<br><i>4. Security:</i> Re-executing commands (especially via <i>-r</i>) should be done with caution, as it can re-run potentially destructive or sensitive operations.


title: IMPLEMENTATION NOTES
content:
Common implementations of <b>aws-history</b> include:<br><i>* Shell Functions/Aliases:</i> Simple versions might be a <i>bash</i> or <i>zsh</i> function that pipes <i>history</i> output through <i>grep 'aws '</i>.<br><i>* Python Scripts:</i> More feature-rich versions often use Python to parse history files, apply sophisticated filtering, and offer interactive command selection or re-execution.<br><i>* Custom Log Files:</i> Some setups redirect all <i>aws</i> commands to a separate log file, providing a more reliable and persistent history independent of shell configuration.


title: TYPICAL USE CASES
content:
Users leverage <b>aws-history</b> for several practical reasons:<br><i>* Auditing & Compliance:</i> Reviewing past actions for security checks or compliance requirements.<br><i>* Debugging:</i> Quickly recalling the exact commands used during troubleshooting sessions.<br><i>* Productivity:</i> Re-executing long or complex commands with minor modifications without retyping them.<br><i>* Learning & Training:</i> As a reference to remember common AWS CLI syntax and patterns.


title: HISTORY
content:
The concept behind <b>aws-history</b> emerged naturally from the widespread use of the AWS CLI. Initially, users relied solely on their shell's built-in history command (e.g., <i>history</i> in Bash) to recall past AWS commands. However, the generic nature of shell history lacked AWS-specific filtering or enhanced capabilities like re-execution by index. As the complexity and frequency of AWS CLI operations grew, developers and system administrators began creating custom shell aliases, functions, and standalone scripts to provide a more tailored and efficient way to manage their AWS CLI command history. This evolution reflects a common need in command-line environments for better auditing, debugging, and productivity tools specific to frequently used applications.


title: SYNOPSIS
content:
The general syntax for using the <i>aws iam</i> subcommand is:<br><br><b>aws iam</b> <i>&lt;subcommand&gt;</i> [<i>&lt;options&gt;</i>] [<i>&lt;parameters&gt;</i>]<br><br><i>&lt;subcommand&gt;</i> refers to a specific IAM operation (e.g., <i>create-user</i>, <i>list-users</i>, <i>attach-user-policy</i>).<br><i>&lt;options&gt;</i> are global AWS CLI options (e.g., <i>--region</i>, <i>--output</i>, <i>--profile</i>).<br><i>&lt;parameters&gt;</i> are specific to the chosen IAM subcommand (e.g., <i>--user-name</i>, <i>--policy-arn</i>).<br><br><u>Examples:</u><br><b>aws iam list-users</b><br><b>aws iam create-user --user-name myNewUser</b><br><b>aws iam attach-user-policy --user-name myUser --policy-arn arn:aws:iam::aws:policy/AdministratorAccess</b>


title: PARAMETERS
content:
<b>list-users</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists IAM users. Does not take direct parameters but supports global AWS CLI options (e.g., <i>--max-items</i>, <i>--starting-token</i>).<br><br><b>create-user</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new IAM user.<br>Key parameters: <i>--user-name &lt;string&gt;</i> (required), <i>--path &lt;string&gt;</i>.<br><br><b>get-user</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves information about a specific IAM user.<br>Key parameter: <i>--user-name &lt;string&gt;</i> (optional, defaults to the current user).<br><br><b>delete-user</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes an IAM user.<br>Key parameter: <i>--user-name &lt;string&gt;</i> (required).<br><br><b>create-role</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new IAM role.<br>Key parameters: <i>--role-name &lt;string&gt;</i> (required), <i>--assume-role-policy-document &lt;string&gt;</i> (required, typically JSON).<br><br><b>attach-user-policy</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attaches a managed policy to an IAM user.<br>Key parameters: <i>--user-name &lt;string&gt;</i> (required), <i>--policy-arn &lt;string&gt;</i> (required).<br><br><b>list-policies</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists managed policies.<br>Supports filtering parameters like <i>--scope</i>, <i>--only-attached</i>.<br><br><b>get-policy</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves information about a specific managed policy.<br>Key parameter: <i>--policy-arn &lt;string&gt;</i> (required).<br><br>


title: DESCRIPTION
content:
The <i>aws iam</i> command is a crucial subcommand of the AWS Command Line Interface (CLI), enabling direct interaction with the AWS Identity and Access Management (IAM) service from your terminal. IAM is a web service that helps you securely control access to AWS resources. Using <i>aws iam</i>, administrators and developers can programmatically manage users, groups, roles, policies, and identity providers. This includes tasks such as creating and deleting users, assigning permissions, managing access keys, configuring multi-factor authentication (MFA) devices, and setting up trust policies for roles. It provides a powerful alternative to the AWS Management Console for automating IAM tasks, integrating with scripts, and streamlining infrastructure as code workflows.


title: CAVEATS
content:
<b>Permissions</b>: To execute <i>aws iam</i> commands, the AWS credentials configured for the CLI (via environment variables, shared credentials file, or IAM role) must have the necessary IAM permissions. For example, to create a user, the principal must have <i>iam:CreateUser</i> permission.<br><b>Region</b>: While IAM is a global service, some AWS CLI commands might implicitly rely on a configured default region or require the <i>--region</i> option for other services. For IAM specific actions, the region usually defaults to <i>us-east-1</i> but can generally be omitted.<br><b>Rate Limits</b>: AWS IAM API calls are subject to rate limits. Scripts making a high volume of calls in a short period may encounter throttling errors. Implement retry mechanisms with exponential backoff if necessary.<br><b>JSON Output</b>: Many IAM commands return JSON output, which can be verbose. Tools like <i>jq</i> are invaluable for parsing and filtering this output.<br><b>Security Best Practices</b>: Exercise caution when creating or modifying IAM entities. Adhere to the principle of least privilege, granting only the necessary permissions. Avoid hardcoding sensitive credentials.


title: OUTPUT FORMATS
content:
By default, <i>aws iam</i> commands output JSON. You can specify other formats using the <i>--output</i> global option, such as <i>text</i> or <i>table</i>, which can be more human-readable for certain commands.<br>Example: <b>aws iam list-users --output table</b>


title: PAGINATING RESULTS
content:
For commands that can return a large number of items (e.g., <i>list-users</i>), the AWS CLI automatically handles pagination. You can control this behavior using <i>--max-items</i> (maximum items to return in a single call) and <i>--starting-token</i> (token to resume a previous paginated request).


title: HISTORY
content:
The AWS Command Line Interface (CLI) was initially released in 2013, providing a unified tool to manage AWS services. Prior to the CLI, interaction with AWS APIs primarily involved SDKs or the AWS Management Console. As a core AWS service, IAM capabilities were integrated into the CLI early on. The development of <i>aws iam</i> as a subcommand reflects the increasing need for programmatic and automated management of AWS identities and access policies, especially with the rise of DevOps, infrastructure as code, and continuous delivery practices. It has evolved with the IAM service, incorporating new features like permission boundaries, service-linked roles, and enhanced policy management.


title: SEE ALSO
content:
<i>aws(1)</i>: The main AWS Command Line Interface command, of which <i>iam</i> is a subcommand., <i>aws configure(1)</i>: Used to set up and manage AWS CLI configuration profiles (credentials, default region, output format)., <i>jq(1)</i>: A lightweight and flexible command-line JSON processor, commonly used to parse the output of AWS CLI commands., <i>less(1)</i>: A pager program often used to view extensive JSON output from AWS CLI commands.


title: SYNOPSIS
content:
<b>aws-kafka</b> <i>&lt;command&gt;</i> [<i>options</i>]<br><b>aws-kafka</b> <i>cluster</i> <i>&lt;subcommand&gt;</i> [<i>options</i>]<br><b>aws-kafka</b> <i>topic</i> <i>&lt;subcommand&gt;</i> [<i>options</i>]


title: PARAMETERS
content:
<b>--region <i>&lt;aws-region&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region to operate in (e.g., <i>us-east-1</i>). Overrides environment variables or configuration.<br><br><b>--profile <i>&lt;profile-name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a specific AWS credential profile from the shared credentials file.<br><br><b>--cluster-name <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the MSK cluster to operate on. Required for cluster-specific commands.<br><br><b>--cluster-arn <i>&lt;arn&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The Amazon Resource Name (ARN) of the MSK cluster. Often used for commands requiring a unique cluster identifier.<br><br><b>--kafka-version <i>&lt;version&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the Apache Kafka version for new clusters (e.g., <i>2.8.1</i>, <i>3.4.0</i>).<br><br><b>--broker-nodes <i>&lt;count&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The desired number of broker nodes for the cluster (e.g., <i>3</i>, <i>6</i>). Typically for cluster creation.<br><br><b>--topic-name <i>&lt;name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the Kafka topic to manage.<br><br><b>--partitions <i>&lt;count&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The number of partitions for a new Kafka topic. Applicable during topic creation.<br><br><b>--replication-factor <i>&lt;count&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The replication factor for a new Kafka topic. Applicable during topic creation.<br><br><b>--output <i>&lt;format&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format (e.g., <i>json</i>, <i>text</i>, <i>table</i>).<br><br><b>--dry-run</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Simulates the command execution without making any actual changes, useful for validation.<br><br>


title: DESCRIPTION
content:
The <b>aws-kafka</b> command is a hypothetical command-line interface (CLI) tool designed to streamline the management of AWS Managed Streaming for Apache Kafka (MSK) clusters and their associated topics directly from the terminal. While not a standard Linux utility, it conceptually serves as a high-level abstraction layer over the native AWS CLI's <i>msk</i> service commands.<br><br>Its primary purpose would be to simplify complex AWS CLI commands for MSK, providing more user-friendly syntax and defaults. Users could easily perform common operations such as creating, describing, listing, and deleting MSK clusters, as well as managing Kafka topics (creating, listing, deleting) within those clusters. This tool would abstract away much of the verbose JSON input typically required by the underlying AWS CLI, making daily operational tasks more efficient for developers and operations teams working with Kafka on AWS.<br><br>It aims to enhance productivity by offering intuitive command structures, reducing the learning curve for AWS MSK interactions, and potentially integrating with other local Kafka tools or scripts.


title: CAVEATS
content:
This 'aws-kafka' command is a conceptual tool; it is not a standard, pre-installed Linux command. Its functionality is typically achieved through the <b>aws msk</b> subcommands of the official <b>AWS CLI</b>. <br><br>Using any tool that interacts with AWS requires proper AWS credentials configured (e.g., via <b>aws configure</b>) and appropriate IAM permissions for the actions being performed. Operations on AWS resources may incur costs, and network connectivity to AWS endpoints is essential for functionality.


title: INTEGRATION WITH AWS CLI
content:
A real-world implementation of an <b>aws-kafka</b> tool would likely be a wrapper or script that leverages the existing <b>AWS CLI</b> and its <i>msk</i> service commands. It would parse simpler input arguments and translate them into the more complex, often JSON-based, parameters required by the native AWS CLI, thereby enhancing usability.


title: SECURITY CONSIDERATIONS
content:
Any interaction with AWS resources, including MSK clusters, is governed by AWS Identity and Access Management (IAM). Users of such a command must have the necessary IAM permissions attached to their AWS credentials to perform actions like creating, describing, or deleting clusters and topics. Network access control via security groups and VPC configurations is also critical for cluster connectivity.


title: HISTORY
content:
The <b>aws-kafka</b> command is a conceptual representation of a simplified interface for managing AWS MSK. It does not have a formal development history as a standalone command. Instead, its purpose mirrors the efforts to simplify cloud resource management, often seen in higher-level SDKs or custom scripts built on top of the comprehensive <b>AWS CLI</b>. The actual interaction with AWS MSK has evolved with the <b>AWS CLI</b>'s <i>msk</i> service commands since MSK's general availability.


title: PARAMETERS
content:
<b>--region <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region to send the request to (e.g., <code>us-east-1</code>).<br><br><b>--output <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format of the command (e.g., <code>json</code>, <code>text</code>, <code>table</code>).<br><br><b>--profile <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a specific named profile from your AWS credentials file.<br><br><b>--endpoint-url <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overrides the default endpoint URL for the service.<br><br><b>--cli-input-json <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads a JSON document from a file or stdin as input for the command.<br><br><b>--name <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Specific to commands like <code>create-index</code>) Specifies the name for a new Kendra index or data source.<br><br><b>--index-id <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Specific to commands like <code>query</code>, <code>delete-index</code>) The unique identifier of a Kendra index.<br><br><b>--query-text <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Specific to the <code>query</code> command) The natural language query string to search for.<br><br>


title: DESCRIPTION
content:
The <b>aws-kendra</b> command, typically invoked as part of the <i>AWS Command Line Interface (CLI)</i> via <code style="white-space: pre;">aws kendra</code>, provides a powerful interface to Amazon Kendra, an intelligent search service. Kendra utilizes machine learning to deliver highly accurate and relevant search results across various content repositories. Users can interact with their Kendra indexes to create, manage, and query them directly from the terminal. This includes operations like creating data sources, ingesting documents, configuring search indexes, and executing sophisticated natural language queries. It abstracts the complexity of underlying machine learning models, allowing developers and administrators to integrate intelligent search into their applications or workflows without deep ML expertise. It's crucial for enterprises looking to improve information discovery within their vast data landscapes.


title: CAVEATS
content:
1. <b>AWS CLI Installation & Configuration:</b> Requires the AWS CLI to be properly installed and configured with valid AWS credentials and default region.<br>2. <b>Internet Connectivity:</b> Operations interact with AWS cloud services, necessitating an active internet connection.<br>3. <b>Permissions:</b> The configured AWS user/role must have appropriate IAM permissions to perform the requested Kendra operations.<br>4. <b>Cost:</b> Amazon Kendra is a paid service; usage incurs costs based on index size, query volume, and other factors.<br>5. <b>Regional Availability:</b> Kendra service availability varies by AWS region.


title: COMMON USE CASES
content:
<i>Enterprise Search:</i> Providing employees with quick and accurate answers from internal documents (e.g., HR policies, technical manuals).<br><i>Customer Support:</i> Powering intelligent chatbots or self-service portals to answer customer queries instantly.<br><i>Research & Development:</i> Accelerating information discovery across large datasets of research papers or patents.


title: INTEGRATION WITH AWS ECOSYSTEM
content:
Kendra integrates seamlessly with other AWS services like Amazon S3 for document storage, Amazon CloudWatch for monitoring, AWS Identity and Access Management (IAM) for secure access, and AWS Lambda for event-driven processing, enabling robust enterprise search solutions.


title: HISTORY
content:
The <b>aws-kendra</b> functionality is provided through the <i>AWS Command Line Interface (CLI)</i>, which itself was first released in 2013, offering a unified tool to manage AWS services. Amazon Kendra, as a managed search service, was launched by AWS in December 2019, providing a highly scalable and intelligent enterprise search solution powered by machine learning. The <code style="white-space: pre;">kendra</code> subcommand was subsequently integrated into the AWS CLI, allowing developers and administrators to manage Kendra indexes and perform queries directly from the command line, offering an alternative to the AWS Management Console or SDKs.


title: SEE ALSO
content:
aws(1): The main AWS Command Line Interface for interacting with various AWS services., aws configure(1): Used for setting up and managing AWS CLI credentials, default region, and output format., aws s3(1): The AWS CLI subcommand for managing Amazon S3, often used as a data source for Kendra., aws iam(1): The AWS CLI subcommand for managing Identity and Access Management, crucial for setting up Kendra permissions.


title: SYNOPSIS
content:
<b>argocd</b> <I>command</I> <I>[subcommand]</I> <I>[flags]</I><br><b>argocd</b> <I>login</I> <I>SERVER</I> <I>[flags]</I><br><b>argocd</b> <I>app</I> <I>sync</I> <I>APP_NAME</I> <I>[flags]</I><br><b>argocd</b> <I>version</I> <I>[flags]</I>


title: PARAMETERS
content:
<b><b>--auth-token</b> <I>TOKEN</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Authentication token for API server.<br><br><b><b>--client-crt</b> <I>PATH</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Client certificate file for authentication.<br><br><b><b>--client-crt-key</b> <I>PATH</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Client certificate key file for authentication.<br><br><b><b>--config</b> <I>PATH</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Path to the Argo CD config file (default: ~/.config/argocd/config.yaml).<br><br><b><b>--grpc-web</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enable gRPC-web client.<br><br><b><b>--help</b>, <b>-h</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Show help for a command or subcommand.<br><br><b><b>--insecure</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skip server certificate validation.<br><br><b><b>--logformat</b> <I>FORMAT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Log format (text|json).<br><br><b><b>--loglevel</b> <I>LEVEL</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the logging level. One of: debug, info, warn, error.<br><br><b><b>--server</b> <I>SERVER</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Argo CD API server address.<br><br><b><b>--sso-port</b> <I>PORT</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Port for the local SSO callback server.<br><br><b><b>--username</b> <I>USERNAME</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Username for API server authentication.<br><br>


title: DESCRIPTION
content:
<b>argocd</b> is the command-line interface (CLI) for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes. It allows users to interact directly with the Argo CD API server to manage the lifecycle of applications, projects, repositories, and clusters.<br><br>With the <b>argocd</b> CLI, users can perform a wide range of operations, including creating, syncing, deleting, and retrieving detailed information about applications. It provides functionalities to inspect application health, view resource differences between Git and live clusters, trigger manual synchronizations, and manage authentication tokens. The CLI is an essential tool for administrators and developers working with Argo CD, offering a powerful and programmatic way to automate and script GitOps workflows, ensuring that application deployments on Kubernetes clusters align with their desired state defined in Git repositories.


title: CAVEATS
content:
<I><b>Version Compatibility:</b></I> It is recommended to use an <b>argocd</b> CLI version that is compatible with the Argo CD server version to avoid unexpected behavior or API mismatches.<br><I><b>Authentication:</b></I> Most commands require authentication against the Argo CD API server. Users must either log in using <b>argocd login</b> or provide authentication details (e.g., token, username/password) via flags.<br><I><b>Network Connectivity:</b></I> The CLI requires network connectivity to the Argo CD API server. Issues with firewalls, network policies, or server availability can prevent successful command execution.<br><I><b>Permissions:</b></I> The actions performable by the CLI are governed by the user's role-based access control (RBAC) permissions configured on the Argo CD server. A user might not have the necessary permissions to execute certain commands or access specific resources.


title: COMMON USAGE PATTERNS
content:
<I>Logging In:</I> <b>argocd login</b> <I>ARGOCD_SERVER_ADDRESS</I> establishes an authenticated session with the Argo CD API server.<br><I>Managing Applications:</I> Commands like <b>argocd app list</b>, <b>argocd app get</b> <I>APP_NAME</I>, and <b>argocd app sync</b> <I>APP_NAME</I> are frequently used to monitor and manage application deployments.<br><I>Inspecting Resources:</I> <b>argocd app diff</b> <I>APP_NAME</I> and <b>argocd app logs</b> <I>APP_NAME</I> provide insights into the application's state and runtime behavior.


title: SCRIPTING AND AUTOMATION
content:
The <b>argocd</b> CLI is designed to be highly scriptable, making it suitable for integrating into CI/CD pipelines, automated workflows, and custom operational scripts. Its consistent command structure and JSON output options for many commands facilitate programmatic interaction.


title: HISTORY
content:
The <b>argocd</b> command-line interface is an integral part of the Argo CD project, which was originally developed and open-sourced by Applatix (later acquired by Intuit). Argo CD gained significant traction as the GitOps methodology matured, becoming a prominent tool within the Cloud Native Computing Foundation (CNCF) landscape. The CLI has evolved alongside the Argo CD server, continuously adding new features and improving usability to support the growing demands of declarative, GitOps-driven application delivery on Kubernetes. Its development is driven by a vibrant open-source community, ensuring it remains a powerful and up-to-date tool for managing complex application deployments.


title: PARAMETERS
content:
<b>create</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new Argo CD application based on a manifest file or command-line arguments. Supports defining source repository, path, destination cluster, and sync policy. Common options: <i>--file</i>, <i>--repo</i>, <i>--path</i>, <i>--dest-server</i>.<br><br><b>get</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves detailed information about a specific application, including its status, health, deployed resources, and synchronization state. Common option: <i>-o, --output</i> for various output formats.<br><br><b>list</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all applications managed by Argo CD, with options to filter by project, repository, or other criteria. Common option: <i>-o, --output</i>.<br><br><b>sync</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manually triggers a synchronization of an application to its desired state defined in Git. Useful for forcing updates or resolving out-of-sync issues. Common options: <i>--revision</i> (to sync to a specific Git revision), <i>--wait</i>.<br><br><b>delete</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes an application from Argo CD and optionally prunes (deletes) associated Kubernetes resources from the target cluster. Common options: <i>--cascade</i> (to delete resources), <i>--prune</i>.<br><br><b>diff</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Compares the live state of an application in the cluster with its desired state in Git, or with local application manifests. Helps in identifying discrepancies before synchronization. Common option: <i>--local</i>.<br><br><b>edit</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Opens the application manifest in a text editor for direct modification of its configuration. Changes are applied after saving.<br><br><b>history</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the synchronization history of an application, showing past sync operations, their statuses, and associated Git revisions.<br><br><b>logs</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Streams logs from pods associated with a specific application. Requires the application's resources to be running in the cluster.<br><br><b>manifests</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves and displays the Kubernetes manifests generated for an application, as seen by Argo CD, before or after deployment.<br><br><b>patch</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a strategic merge patch or JSON patch to an application's configuration.<br><br><b>rollbacks</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Rolls back an application to a previously synchronized, successful state from its history.<br><br><b>set</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets specific parameters or attributes for an application, such as Git parameters, environment variables, or resource overrides.<br><br><b>unset</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes specific parameters or attributes that were previously set for an application.<br><br><b>wait</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Waits for an application to reach a healthy and synchronized state. Useful in scripting automated deployments.<br><br>


title: DESCRIPTION
content:
The <b>argocd app</b> command group provides comprehensive functionalities for managing applications within Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes. Applications in Argo CD represent a deployed unit in Kubernetes, managed by Git repositories. This command allows users to create, view, modify, synchronize, and delete applications, as well as inspect their status, history, and resources.<br><br>It serves as the primary interface for interacting with application resources defined in Argo CD, facilitating GitOps workflows by enabling operations like manual synchronization, application health checks, and resource manifest inspection directly from the command line. It encapsulates the core operations required for a GitOps-driven application deployment and management strategy.


title: CAVEATS
content:
<b>Requires</b> the <b>argocd</b> CLI to be installed and authenticated against an Argo CD API server.<br><b>User must have</b> appropriate Argo CD RBAC (Role-Based Access Control) permissions to perform operations on applications.<br><b>Network connectivity</b> is required to the Argo CD API server and the target Kubernetes cluster(s).<br><b>Familiarity</b> with GitOps principles, Kubernetes resources, and application manifests is essential for effective use.


title: GITOPS PRINCIPLE
content:
<b>argocd app</b> commands strongly adhere to the GitOps principle, where the desired state of applications is declared in Git and Argo CD ensures the cluster state converges to it. While manual operations via <b>argocd app sync</b> can be performed for one-off actions, the authoritative source of truth for application configuration remains the Git repository.


title: APPLICATION HEALTH AND SYNCHRONIZATION
content:
The commands provide extensive information about application health and synchronization status, which is crucial for monitoring and troubleshooting deployments. Commands like <b>argocd app get</b> and <b>argocd app list</b> are frequently used to ascertain the current state of deployed applications.


title: HISTORY
content:
Argo CD was originally created by Applatix and open-sourced in 2018. It became a CNCF (Cloud Native Computing Foundation) graduated project in 2022. The <b>argocd app</b> command group has been a core component of its CLI since early versions, continuously evolving with new features like resource hooks, sync waves, and improved health checks, reflecting the growing maturity and capabilities of the Argo CD platform in managing complex Kubernetes deployments using GitOps principles.


title: SYNOPSIS
content:
<br><b><code>watch <I>class_pattern</I> <I>method_pattern</I> [<I>expression</I>] [<I>condition_expression</I>] [<I>options</I>]</code></b><br><br><I><code>class_pattern</code></I>: A pattern matching the fully qualified Java class name (e.g., <I><code>com.example.MyClass</code></I>, <I><code>*Service</code></I>).<br><I><code>method_pattern</code></I>: A pattern matching the method name within the class (e.g., <I><code>myMethod</code></I>, <I><code>get*</code></I>).<br><I><code>expression</code></I>: (Optional) A <I>SpEL</I> expression specifying the data to display. Common variables include <I><code>params</code></I> (method arguments), <I><code>returnObj</code></I> (return value), <I><code>throwExp</code></I> (thrown exception), <I><code>this</code></I> (the object instance). Default is <I><code>{params, returnObj, throwExp}</code></I>.<br><I><code>condition_expression</code></I>: (Optional) A <I>SpEL</I> expression that must evaluate to <I><code>true</code></I> for the watch event to be captured. This allows filtering based on argument values, return values, or other conditions (e.g., <I><code>'{params[0].name == "test"}'</code></I>).


title: PARAMETERS
content:
<b><I>class_pattern</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The fully qualified class name or a pattern to match (e.g., <I><code>com.example.MyClass</code></I>, <I><code>*Service</code></I>).<br><br><b><I>method_pattern</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The method name within the specified class or a pattern to match (e.g., <I><code>myMethod</code></I>, <I><code>get*</code></I>).<br><br><b>[<I>expression</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;An optional <I>SpEL</I> expression defining the data to be printed. For example, <I><code>{params[0], returnObj.name}</code></I> to print the first argument and the 'name' property of the return object.<br><br><b>[<I>condition_expression</I>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;An optional <I>SpEL</I> expression that must evaluate to <I><code>true</code></I> for the watch event to be triggered. For example, <I><code>'{params[0] == null}'</code></I> to watch only when the first argument is null.<br><br><b><b>-b, --before</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Observe the method before it executes. Default is off.<br><br><b><b>-s, --success</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Observe the method upon successful return. This is enabled by default if no other observation point is specified.<br><br><b><b>-e, --exception</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Observe the method when it throws an exception. This is enabled by default if no other observation point is specified.<br><br><b><b>-f, --finish</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Observe the method upon completion, regardless of success or exception. This is enabled by default if no other observation point is specified.<br><br><b><b>-x <I>level</I>, --expand <I>level</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the maximum depth to expand objects in the output. A value of <I><code>0</code></I> means no expansion, <I><code>1</code></I> shows immediate fields, etc. Default is <I><code>1</code></I>.<br><br><b><b>-n <I>times</I>, --limit <I>times</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Limit the number of times the watch command will trigger. The command will automatically exit after reaching this limit.<br><br><b><b>--timeout <I>ms</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a timeout in milliseconds for the command to execute. If the timeout is reached, the command will be terminated.<br><br>


title: DESCRIPTION
content:
<br>The <I><code>watch</code></I> command is a powerful feature within the <I>Arthas</I> diagnostic tool for Java applications. It allows developers to observe the real-time execution of specified methods, providing deep insights into their arguments, return values, thrown exceptions, and the <I><code>this</code></I> object instance. Unlike simply printing logs, <I><code>watch</code></I> dynamically instruments the target method at runtime, enabling detailed inspection without modifying source code or restarting the application. This makes it invaluable for debugging complex issues, understanding method behavior, and analyzing performance bottlenecks.<br><br>Users can define powerful <I>Spring Expression Language (SpEL)</I> expressions to filter events or extract specific data points, making the output highly customizable and relevant to the task at hand. It supports observation at various points of method execution: before invocation, upon successful return, on exception, or upon completion (whether success or exception).


title: CAVEATS
content:
While <I><code>arthas-watch</code></I> is highly efficient, continuous monitoring of frequently called methods or using complex <I>SpEL</I> expressions can introduce a slight performance overhead due to runtime bytecode instrumentation and data processing.<br>The command operates within the context of the attached JVM; it cannot watch static initializers or constructors directly in the same way as regular methods.<br>Output can be extensive for deeply nested objects or high-frequency calls, requiring careful use of <I><code>-x</code></I> and <I><code>-n</code></I> options, and precise <I><code>condition_expression</code></I> to manage verbosity.


title: UNDERSTANDING SPEL EXPRESSIONS
content:
<I>SpEL</I> (Spring Expression Language) is central to the power of <I><code>watch</code></I>. It allows you to programmatically define what data to extract and under what conditions. Key variables available in the <I><code>watch</code></I> context include:<br><b><I><code>params</code></I></b>: An array of method arguments.<br><b><I><code>returnObj</code></I></b>: The object returned by the method (available at <I><code>-s</code></I> and <I><code>-f</code></I> points).<br><b><I><code>throwExp</code></I></b>: The exception thrown by the method (available at <I><code>-e</code></I> and <I><code>-f</code></I> points).<br><b><I><code>this</code></I></b>: The current object instance (<I><code>null</code></I> for static methods).<br><b><I><code>clazz</code></I></b>: The <I><code>Class</code></I> object of the current method.<br><b><I><code>method</code></I></b>: The <I><code>Method</code></I> object of the current method.<br><b><I><code>target</code></I></b>: Equivalent to <I><code>this</code></I>.<br><b><I><code>cost</code></I></b>: The execution time of the method in milliseconds (available at <I><code>-s</code></I>, <I><code>-e</code></I>, <I><code>-f</code></I> points).


title: OBSERVATION POINTS
content:
The <I><code>watch</code></I> command offers fine-grained control over when data is captured:<br><b>Before execution (-b)</b>: Captures data right before the method's body is executed. Useful for inspecting initial arguments.<br><b>On successful return (-s)</b>: Captures data when the method returns normally.<br><b>On exception (-e)</b>: Captures data when the method throws an exception.<br><b>On finish (-f)</b>: Captures data when the method completes, regardless of whether it returned successfully or threw an exception.<br>By default, if no specific observation point is selected, <I><code>watch</code></I> combines <I><code>-s</code></I>, <I><code>-e</code></I>, and <I><code>-f</code></I> to provide comprehensive insight into method completion, showing return values, exceptions, and execution time.


title: HISTORY
content:
<br><I>Arthas</I> itself was open-sourced by Alibaba in 2018, evolving from internal diagnostic tools used to troubleshoot complex Java applications in large-scale production environments. The <I><code>watch</code></I> command has been a fundamental and indispensable feature from its early versions, crucial for its ability to provide real-time, non-invasive insights into application behavior. Its development has focused on enhancing flexibility through advanced <I>SpEL</I> support, improving performance, and expanding the range of observable data points, making it a cornerstone for dynamic debugging in the Java ecosystem.


title: SEE ALSO
content:
<br>This section refers to commands within the <I>Arthas</I> ecosystem itself, as <I><code>arthas-watch</code></I> is a sub-command of the <I>Arthas</I> tool and not a standalone Linux utility in the typical sense of having its own man page., <br><b><code>trace</code></b>: Trace method invocations, showing the call stack and time spent., <b><code>monitor</code></b>: Monitor method statistics, including QPS, success/failure count, and average RT., <b><code>stack</code></b>: Display the current method's stack trace., <b><code>tt</code></b>: Time Tunnel, record method invocations and replay them, allowing for post-mortem debugging.


title: PARAMETERS
content:
<b><b>-c</b>, <b>--check</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Checks the spelling of a file interactively, allowing the user to accept, reject, or correct misspelled words.<br><br><b><b>-a</b>, <b>--suggest</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operates in 'pipe' mode, reading words from standard input and outputting suggestions for misspelled ones. Ideal for programmatic use.<br><br><b><b>-l</b> <i>lang</i>, <b>--lang=</b><i>lang</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the language dictionary to use (e.g., <i>en_US</i> for American English, <i>es</i> for Spanish).<br><br><b><b>--mode=</b><i>mode</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the operating mode, affecting how text is parsed. Common modes include <i>none</i> (plain text), <i>email</i>, <i>html</i>, <i>sgml</i>, and <i>tex</i>.<br><br><b><b>--master=</b><i>dict</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses the specified master dictionary instead of the default dictionary for the selected language.<br><br><b><b>--add-extra-dict=</b><i>dict</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds an additional dictionary to be used alongside the master dictionary for checking.<br><br><b><b>--personal=</b><i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to the personal dictionary file. If not set, a default location (e.g., <i>~/.aspell.en.pws</i>) is used.<br><br><b><b>--add</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds words from standard input to the personal dictionary specified by <b>--personal</b>.<br><br><b><b>--del</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes words from standard input from the personal dictionary specified by <b>--personal</b>.<br><br><b><b>--conf=</b><i>file</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads configuration settings from the specified file, overriding system-wide and user-specific defaults.<br><br>


title: DESCRIPTION
content:
<b>Aspell</b> is a free and open-source spell checker designed as a replacement for <b>Ispell</b>, aiming to provide superior functionality, especially in its suggestion algorithms and multilingual support. It boasts a highly intelligent suggestion mechanism that can often propose correct words even from severely misspelled input, by considering various forms of errors including phonetic and typographical mistakes. <br><br>Key features include comprehensive language support, allowing for the use of multiple dictionaries simultaneously, and context-aware suggestions that enhance accuracy. <b>Aspell</b> can operate in interactive mode for manual document checking or in pipe mode for seamless integration into other applications, scripts, or text editors. Its versatility is further extended by support for various document formats like plain text, email, HTML, SGML, and TeX, where it intelligently processes or ignores specific syntax elements to ensure accurate spell checking. Users can also customize its behavior by maintaining personal dictionaries for specialized vocabulary.


title: CAVEATS
content:
<b>Aspell</b>'s functionality is dependent on the availability of installed language dictionaries. If a specific language pack is not present, spell checking for that language will not be possible. While generally efficient, processing extremely large files or documents with complex embedded syntax (like heavily nested HTML) might experience slower performance. Its advanced suggestion algorithm, though powerful, can sometimes produce unexpected results for very unusual or obscure misspellings.


title: PERSONAL DICTIONARIES AND CUSTOMIZATION
content:
<b>Aspell</b> allows users to extend its vocabulary through personal dictionaries. These are plain text files where users can add words (e.g., proper nouns, technical jargon, acronyms) that <b>Aspell</b> would otherwise flag as misspelled. Words can be added interactively during a check session or via the command line using options like <b>--add</b>. This feature makes <b>Aspell</b> highly customizable for specific domains or personal writing styles, ensuring that only genuine misspellings are highlighted.


title: HISTORY
content:
<b>GNU Aspell</b> emerged in the late 1990s as a modern successor to the established <b>Ispell</b> program. Developed by Kevin Atkinson as part of the GNU project, its primary goal was to improve upon <b>Ispell</b>'s limitations, specifically its suggestion quality and lack of robust multilingual capabilities. The development focused on creating a more sophisticated suggestion algorithm that could better handle diverse errors and a flexible framework for managing multiple dictionaries and character sets. The first stable release was made available in 2000, establishing <b>Aspell</b> as a powerful and adaptable spell-checking solution for the open-source community.


title: SYNOPSIS
content:
<i>The `astronomer` command is not a standard Linux utility and therefore has no general synopsis.</i>


title: DESCRIPTION
content:
The `astronomer` command is <b>not a standard utility</b> found in typical Linux distributions like Ubuntu, Debian, Fedora, or RHEL. It does not exist as a built-in shell command, a commonly installed package, or a widely recognized alias for any astronomical software. <br><br>Users seeking command-line tools for astronomy or astrophysics on Linux would typically look for specialized software packages, which might include their own specific command-line interfaces (CLIs). For example, tools for telescope control, data analysis of FITS files, or celestial mechanics simulations would have unique command names and installation procedures. <br><br>It's possible that `astronomer` might refer to a custom script or a very niche application not widely distributed. Another possibility is confusion with 'Astronomer Inc.', a commercial company that provides a platform for Apache Airflow, which has its own CLI tool often referred to as `astro`, but not simply `astronomer`.


title: CAVEATS
content:
The primary caveat is that `astronomer` is <b>not a recognized command</b> in the standard Linux ecosystem. Attempting to execute it will typically result in a 'command not found' error, unless a user has specifically created a custom script or alias with that name on their system.


title: <I>HOW TO FIND ASTRONOMICAL TOOLS ON LINUX</I>
content:
To perform astronomical tasks on Linux, users should explore package managers for scientific software. For instance, packages like `celestia`, `stellarium` (often GUI-based but sometimes with CLI components), `ds9` (for FITS image display), or libraries like `astropy` (Python) often provide specialized command-line tools or utilities. Searching for 'astronomy' or 'astrophysics' in your distribution's package repository (e.g., `apt search astronomy` on Debian/Ubuntu, `dnf search astronomy` on Fedora/RHEL) is the recommended approach.


title: HISTORY
content:
As `astronomer` is not a standard Linux command, there is <b>no documented history</b> of its development or usage within the common command-line utilities. Any occurrence would be specific to a custom environment or a particular, non-standard software distribution.


title: SYNOPSIS
content:
<b>atktopbm</b> <I>input_atk_file</I> > <I>output_pbm_file</I><br><i>(Reads from stdin, writes to stdout)</i>


title: DESCRIPTION
content:
<i>atktopbm</i> is a specialized command-line utility from the <I>Netpbm</I> suite. Its primary function is to convert image files stored in the Andrew Toolkit (ATK) raster format into the Portable BitMap (PBM) format.<br><br>The ATK raster format is an older, less common image format primarily associated with the Andrew Project, developed at Carnegie Mellon University. PBM is a simple, plaintext format for black and white images, part of the Netpbm family of image formats (PBM, PGM, PPM).<br><br><i>atktopbm</i> acts as a crucial bridge for users needing to process or view these legacy ATK images using modern image processing tools that typically support Netpbm formats. It is designed to read the ATK image data from standard input and write the resulting PBM data to standard output, allowing for easy piping with other Netpbm utilities or redirection to a file.


title: CAVEATS
content:
<b>Niche Utility:</b> <i>atktopbm</i> is highly specialized for the Andrew Toolkit (ATK) raster format, which is largely obsolete and rarely encountered in modern computing environments.<br><b>Older Technology:</b> Its primary relevance was during the active development and usage of the Andrew Project in the 1980s.<br><b>Limited Functionality:</b> This command serves solely as a format converter. It does not offer options for image manipulation, scaling, color depth adjustments, or error correction.<br><b>Standard I/O Centric:</b> It exclusively operates by reading from standard input and writing to standard output, which requires familiarity with shell redirection for file-based operations.


title: INPUT AND OUTPUT BEHAVIOR
content:
<i>atktopbm</i> strictly adheres to the Unix philosophy of reading from standard input (stdin) and writing to standard output (stdout). This means you typically interact with it using shell redirection (<, >) or pipes (|). For example, to convert an ATK file named <I>image.atk</I> to a PBM file named <I>image.pbm</I>, you would use the command: <br><code>atktopbm < image.atk > image.pbm</code><br>This design makes it highly versatile for integration into shell scripts and workflows where data flows sequentially between commands.


title: HISTORY
content:
<i>atktopbm</i> originated from the Andrew Project at Carnegie Mellon University, an ambitious distributed computing environment project from the 1980s. It was later incorporated into the <I>pbmplus</I> package, which eventually evolved into the comprehensive <I>Netpbm</I> suite of graphics utilities. Its development reflects the need to integrate proprietary or specialized graphics formats from that era into more universal, interoperable standards like the Netpbm formats. Its primary purpose has always been to facilitate the processing and viewing of legacy ATK graphical data within the broader Unix/Linux ecosystem.


title: PARAMETERS
content:
<b><b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message detailing available commands and options.<br><br><b><b>--version</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the version information for <b>audtool</b>.<br><br><b><b>playback-play</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts playback of the current song.<br><br><b><b>playback-pause</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Pauses playback. If paused, resumes playback.<br><br><b><b>playback-stop</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Stops playback.<br><br><b><b>playback-next</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skips to the next song in the playlist.<br><br><b><b>playback-prev</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Skips to the previous song in the playlist.<br><br><b><b>playback-seek</b> <i>SECONDS</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Seeks to a specific position (in seconds) within the current song.<br><br><b><b>playback-status</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reports the current playback status (e.g., 'playing', 'paused', 'stopped').<br><br><b><b>current-song-filename</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the full path and filename of the currently playing song.<br><br><b><b>current-song-output-length</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the total length of the current song in seconds.<br><br><b><b>current-song-tuple-field</b> <i>FIELD</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs a specific metadata field (e.g., 'artist', 'title', 'album') of the current song.<br><br><b><b>playlist-add</b> <i>FILE</i>...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds one or more music files or directories to the current playlist.<br><br><b><b>playlist-clear</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clears all songs from the current playlist.<br><br><b><b>playlist-length</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the total number of songs in the current playlist.<br><br><b><b>playlist-current-pos</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the 0-indexed position of the currently playing song in the playlist.<br><br><b><b>volume-get</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Outputs the current volume level as a percentage (0-100).<br><br><b><b>volume-set</b> <i>PERCENT</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the volume level to the specified percentage (0-100).<br><br><b><b>shuffle-on</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables shuffle mode for playback.<br><br><b><b>shuffle-off</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables shuffle mode for playback.<br><br><b><b>repeat-on</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables repeat mode (repeats current song or playlist).<br><br><b><b>repeat-off</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables repeat mode.<br><br>


title: DESCRIPTION
content:
The <b>audtool</b> command is a powerful command-line utility designed to interact with and control the <I>Audacious</I> media player. It allows users to manage playback, manipulate playlists, retrieve song information, and adjust various player settings directly from the terminal or within scripts. This provides a versatile interface for automation, remote control, or simply quick actions without needing to open or interact with the graphical user interface. It is particularly useful for scripting custom keyboard shortcuts, integrating with desktop environments, or building custom media player frontends.<br><br>For <b>audtool</b> to function, an instance of the <I>Audacious</I> media player must be running, as it communicates with the active player process.


title: CAVEATS
content:
<b>audtool</b> requires an instance of the <I>Audacious</I> media player to be running. It cannot start Audacious, nor can it control multiple instances of Audacious simultaneously. Its functionality is limited to controlling the currently active Audacious process.


title: USAGE EXAMPLES
content:
<i>To play the next song:</i><br><b>audtool playback-next</b><br><br><i>To add a song to the playlist:</i><br><b>audtool playlist-add</b> <I>~/Music/mysong.mp3</I><br><br><i>To get the current song's title:</i><br><b>audtool current-song-tuple-field</b> <I>title</I><br><br><i>To set volume to 50%:</i><br><b>audtool volume-set</b> <I>50</I>


title: HISTORY
content:
<b>audtool</b> is an integral part of the <I>Audacious</I> media player project. <I>Audacious</I> itself originated as a fork of <I>XMMS</I> (X Multimedia System) in 2005, aiming to maintain a classic Winamp-like interface while providing modern audio backend support and features. <b>audtool</b> was developed alongside <I>Audacious</I> to offer a robust command-line interface, extending the player's utility beyond its graphical environment and facilitating integration with various scripting and automation tasks common in Linux desktop environments.


title: SYNOPSIS
content:
<code>aura</code> <i>[global options]</i> <i>&lt;operation&gt;</i> <i>[package(s)...]</i><br><br>Common operations:<br><b>aura -Syu</b> <i>(Sync and upgrade official and AUR packages)</i><br><b>aura -S</b> <i>&lt;package(s)&gt; (Install official packages)</i><br><b>aura -A</b> <i>&lt;package(s)&gt; (Install/build AUR packages)</i><br><b>aura -R</b> <i>&lt;package(s)&gt; (Remove packages)</i><br><b>aura -Ss</b> <i>&lt;query&gt; (Search for packages)</i><br><b>aura -Qi</b> <i>&lt;package&gt; (Display package information)</i><br><b>aura -Cc</b> <i>(Clean package cache)</i>


title: PARAMETERS
content:
<b>-S, --sync</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Synchronize packages. Used for installing, upgrading, and querying the official repositories. Often combined with <code>-y</code> and <code>-u</code>.<br><br><b>-A, --aur</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Operate specifically on AUR packages. This implies fetching PKGBUILDs, building, and installing.<br><br><b>-R, --remove</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Remove specified packages from the system.<br><br><b>-U, --upgrade</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Upgrade or install local packages (e.g., <code>.pkg.tar.zst</code> files).<br><br><b>-Q, --query</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Query the package database for installed packages or specific package information.<br><br><b>-Ss, --search</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Search the official repositories and AUR for packages matching a query.<br><br><b>-Qi, --info</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display comprehensive information about a specific package.<br><br><b>-C, --cache</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manage the package cache, e.g., to clean old packages with <code>-Cc</code>.<br><br><b>--foreign</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Restrict operations to packages installed from the AUR (foreign packages).<br><br><b>--orphans</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manage orphaned packages (installed as dependencies but no longer required).<br><br><b>--noconfirm</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Bypass all confirmation prompts. Use with caution.<br><br><b>--ignore <pkg></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not upgrade or install the specified package(s).<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help information for <code>aura</code> or a specific subcommand.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display the current version of <code>aura</code>.<br><br>


title: DESCRIPTION
content:
<code>aura</code> is a command-line utility designed to simplify the management of packages on <b>Arch Linux</b>, with a primary focus on the <b>Arch User Repository (AUR)</b>. Written in <b>Haskell</b>, it aims to provide a fast, reliable, and user-friendly experience, mirroring the syntax and feel of <b>pacman</b>, the official Arch Linux package manager.<br><br><code>aura</code> allows users to seamlessly install, update, remove, search for, and query information about both official repository packages and those from the AUR. It handles the process of fetching <b>PKGBUILD</b>s, resolving dependencies, compiling software, and installing the resulting packages, significantly streamlining the use of the community-driven AUR. Beyond basic package management, <code>aura</code> offers features like cache cleaning, orphan package management, and a dedicated interface for managing <b>Haskell</b> packages.


title: CAVEATS
content:
<code>aura</code> operates on the <b>Arch User Repository (AUR)</b>, which is a community-driven collection of <b>PKGBUILD</b>s. Packages from the AUR are <i>user-contributed</i> and <i>not officially supported</i> by Arch Linux. Users should exercise caution and <i>review PKGBUILDs</i> before building and installing AUR packages, as they involve compiling and installing software from potentially untrusted sources.<br><br><code>aura</code> requires <code>pacman</code> and <code>base-devel</code> (for build tools like <code>make</code> and <code>gcc</code>) to function correctly. While <code>aura</code> simplifies the process, the underlying security considerations of using the AUR remain.


title: THE ARCH USER REPOSITORY (AUR)
content:
The <b>AUR</b> is a community-driven repository for Arch Linux users. It contains <b>PKGBUILD</b>s, which are shell scripts that allow users to compile software from source and install it via <code>pacman</code>. It's a vast source for software not available in the official repositories, but requires user vigilance regarding package integrity.


title: PKGBUILDS
content:
A <b>PKGBUILD</b> is a build script that <code>makepkg</code> (and thus <code>aura</code>) uses to create <code>pacman</code> packages. It defines package metadata, dependencies, build instructions, and installation procedures. Users are encouraged to inspect <b>PKGBUILD</b>s for safety before building AUR packages.


title: HISTORY
content:
<code>aura</code> was created by <b>Jonathon Foss (Fosskers)</b> and is written entirely in <b>Haskell</b>. Its development aimed to provide an alternative AUR helper that was fast, reliable, and offered a user interface consistent with <code>pacman</code>. It has been actively maintained, gaining a reputation for its clear output, robust error handling, and dedicated features like Haskell package management, which are a nod to its underlying language.


title: SYNOPSIS
content:
<code>autojump [options] [query]</code><br><code>j [options] [query]</code><br><code>j -s</code><br><code>j --stat</code>


title: PARAMETERS
content:
<b><i>[query]</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The partial name or fragment of the directory you wish to jump to. <i>autojump</i> will use fuzzy matching to find the best match based on its learned database.<br><br><b><i>-s</i>, <i>--stat</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays statistics about the <i>autojump</i> database, including the total number of entries and usage frequency.<br><br><b><i>--add &lt;path&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Manually adds a specified path to the <i>autojump</i> database. This is useful for directories that might not be frequently `cd`ed into but are important.<br><br><b><i>--purge</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes non-existent directories from the <i>autojump</i> database, cleaning up stale entries.<br><br><b><i>-h</i>, <i>--help</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the help message and available options.<br><br><b><i>-v</i>, <i>--version</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current version of <i>autojump</i>.<br><br>


title: DESCRIPTION
content:
<i>autojump</i> is a free, open-source command-line utility that allows users to navigate the filesystem faster by learning their habits. Instead of typing out long paths with `cd`, <i>autojump</i> tracks directories visited using the `cd` command and builds a database based on frequency and recency.<br><br>When a user types `j` followed by a partial directory name, <i>autojump</i> uses fuzzy matching to jump to the most probable directory. For instance, `j proj` might take you to <I>/home/user/documents/work/my_project</I>. This significantly reduces typing and improves productivity for developers and power users who frequently switch between many directories. It integrates seamlessly with popular shells like Bash, Zsh, and Fish, providing an intuitive and adaptive way to move around the command line.


title: CAVEATS
content:
<i>autojump</i> requires shell integration (e.g., sourcing `autojump.bash` or `autojump.zsh`) to function correctly. This is usually handled during installation.<br>It only tracks directories you navigate to using `cd`. Directories visited via other means (e.g., GUI, `pushd` without a subsequent `cd`, `sudo cd`) are not automatically added.<br>The effectiveness of <i>autojump</i> improves over time as it learns your navigation patterns. It might not be immediately useful after a fresh installation.<br>Fuzzy matching can sometimes lead to unexpected jumps if multiple directories have similar names and similar scores.


title: <I>INSTALLATION AND SHELL INTEGRATION</I>
content:
To use <i>autojump</i>, it must be installed via your distribution's package manager (e.g., `apt install autojump` on Debian/Ubuntu, `pacman -S autojump` on Arch). After installation, you need to ensure that the appropriate shell script (e.g., `autojump.bash` for Bash, `autojump.zsh` for Zsh) is sourced in your shell's configuration file (e.g., `~/.bashrc`, `~/.zshrc`). This typically involves adding a line like `[[ -s ~/.autojump/etc/profile.d/autojump.sh ]] && source ~/.autojump/etc/profile.d/autojump.sh` or similar, depending on the installation method.


title: <I>USAGE EXAMPLES</I>
content:
To jump to a directory whose path contains "documents": <code>j doc</code><br>To jump to a directory that's a subfolder of "projects" and contains "blog": <code>j pro blog</code><br>To display current database statistics: <code>j -s</code><br>To add the current directory to the database without `cd`ing: <code>j --add .</code><br>To clean up non-existent entries: <code>j --purge</code>


title: HISTORY
content:
<i>autojump</i> was created by <b>Leo Hsu</b>, initially released around 2010. It emerged as a solution to streamline command-line navigation, addressing the repetitive nature of typing long directory paths. Its design philosophy centered on simplicity and intelligent learning, quickly gaining popularity among Linux and macOS users for its efficiency gains. The project is open-source and has seen continuous development and contributions from the community, ensuring compatibility with various shells and ongoing improvements to its fuzzy matching and scoring algorithms.


title: PARAMETERS
content:
<b>--help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays available command-line options and usage information.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the <i>Avidemux</i> version information.<br><br><b>--load <<i>file</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Loads the specified video <i>file</i> for processing. Often used in conjunction with a script.<br><br><b>--run <<i>script.py</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes the Python <i>script.py</i> containing <i>Avidemux</i> commands for batch processing. This is the primary method for advanced CLI usage.<br><br><b>--save <<i>file</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Saves the processed video to the specified output <i>file</i>. Typically controlled by the Python script.<br><br><b>--quit</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exits <i>Avidemux</i> after completing all specified tasks, without opening the GUI.<br><br><b>--output-format <<i>format</i>></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the output container <i>format</i> (e.g., MP4, AVI). This option is often overridden or managed by the executed Python script.<br><br>


title: DESCRIPTION
content:
<i>Avidemux</i> is a free and open-source video editor designed for simple cutting, filtering, and encoding tasks. While primarily a graphical user interface (GUI) application, it offers robust command-line capabilities, making it ideal for automation, batch processing, and headless server operations.<br><br>It supports a wide variety of video, audio, and image formats, including AVI, MP4, DIVX, XVID, MPEG-4 AVC, H.264, and more. Common operations include cutting video segments, re-encoding video/audio with various codecs, applying filters (e.g., deinterlacing, resizing, denoising), and multiplexing/demultiplexing streams.<br><br>The command-line interface (CLI) is particularly powerful when used in conjunction with <i>Avidemux</i>'s scripting engine, which allows users to define complex processing workflows using Python scripts. This enables repeatable tasks and integration into larger automated pipelines.


title: CAVEATS
content:
<i>Avidemux</i> is primarily a GUI application. Its command-line interface is powerful but principally designed for scripting and batch processing rather than interactive, direct command-line editing. Complex editing tasks are often easier to prototype in the GUI and then export as a script. The command-line options can be less intuitive compared to dedicated CLI tools like <i>FFmpeg</i>, as much functionality is exposed through the Python scripting engine rather than direct command-line flags.


title: USING PYTHON SCRIPTS FOR AUTOMATION
content:
The most powerful way to use <i>Avidemux</i> from the command line is by running a Python script. These scripts define a sequence of operations (loading, filtering, encoding, saving) and can be generated directly from the <i>Avidemux</i> GUI (<i>File</i> -> <i>Save project as...</i> or <i>File</i> -> <i>Save script as...</i>) after configuring your desired operations. This allows for precise control over codecs, filters, and output settings, making batch processing highly efficient.<br><br><i>Example of a simple Avidemux Python script (e.g., process_video.py):</i><br><code><br>adm = Avidemux()<br>adm.load("/path/to/input.mp4")<br>adm.addVideoFilter("yadif") # Add a deinterlace filter<br>adm.setContainer("MP4", "MP4") # Set output container to MP4<br>adm.save("/path/to/output.mp4")<br></code><br><i>To execute this script from the command line:</i><br><code><b>avidemux3</b> --run process_video.py --quit</code>


title: HISTORY
content:
<i>Avidemux</i> was created by Benoît Fouet (known as 'mean') and first released in 2001. It was developed to provide a straightforward, open-source tool for basic video editing, particularly useful for tasks like cutting and encoding videos for specific purposes (e.g., DivX, Xvid). Over time, it has evolved to support a wider range of formats and features, while maintaining its focus on simplicity and efficiency for common video processing tasks. Its robust Python scripting capabilities were added to facilitate automation and batch processing, expanding its utility beyond just a GUI tool.


title: SYNOPSIS
content:
<B>awk</B> [<I>options</I>] <I>'program'</I> [<I>file ...</I>]<br><B>awk</B> [<I>options</I>] <B>-f</B> <I>program-file</I> [<I>file ...</I>]


title: PARAMETERS
content:
<b><B>-F <I>fs</I></B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the input field separator to <I>fs</I> (a regular expression). By default, whitespace (spaces and tabs) is used.<br><br><b><B>-v <I>var</I>=<I>val</I></B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Assigns the value <I>val</I> to the variable <I>var</I> before the <B>BEGIN</B> block of the <I>awk</I> program is executed. Useful for passing shell variables.<br><br><b><B>-f <I>program-file</I></B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads the <I>awk</I> program source from the specified <I>program-file</I> instead of from the command line.<br><br><b><B>-W <I>option</I></B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with GNU <I>awk</I> (<B>gawk</B>) to specify compatibility options or extensions, e.g., <B>-W posix</B> for strict POSIX compliance or <B>-W traditional</B> for original <I>awk</I> behavior.<br><br><b><B>--help</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message and exits.<br><br><b><B>--version</B></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays version information and exits.<br><br>


title: DESCRIPTION
content:
The <I>awk</I> utility is a versatile and powerful text processing language designed for pattern scanning and processing. It reads input files (or standard input) line by line, comparing each line against a set of patterns. For every line that matches a pattern, <I>awk</I> executes a corresponding action.<br><br>At its core, <I>awk</I> works by splitting each input line into fields, accessible via variables like <B>$1</B> (first field), <B>$2</B> (second field), and <B>$0</B> (the entire line). It uses whitespace as the default field separator, but this can be customized. <I>awk</I> provides a rich set of built-in variables (e.g., <B>NR</B> for record number, <B>NF</B> for number of fields), arithmetic and string functions, and control flow statements (like <I>if</I>, <I>else</I>, and loops), making it a full-fledged programming language for data manipulation. It's commonly used for data extraction, report generation, reformatting data, and performing various text-based analytical tasks.


title: CAVEATS
content:
While powerful, <I>awk</I> can be resource-intensive for extremely large datasets if not optimized, particularly when storing entire lines or fields in arrays. Its compact syntax, while efficient, can be initially challenging for newcomers.<br><br>There are subtle behavioral differences between various <I>awk</I> implementations, primarily between the original AT&T <I>awk</I>, <B>nawk</B> (new <I>awk</I>), and <B>gawk</B> (GNU <I>awk</I>). Most Linux systems use <B>gawk</B>, which offers the most features and POSIX compliance, but awareness of potential discrepancies is important when porting scripts.


title: PROGRAM STRUCTURE
content:
An <I>awk</I> program consists of a sequence of pattern-action statements. It typically follows the structure:<br><B>BEGIN</B> { <I>actions</I> }<br><I>pattern</I> { <I>actions</I> }<br>...<br><B>END</B> { <I>actions</I> }<br><br>The <B>BEGIN</B> block is executed once before any input lines are processed. <I>Pattern-action</I> pairs are applied to each input line. The <B>END</B> block is executed once after all input lines have been processed.


title: BUILT-IN VARIABLES
content:
<I>awk</I> provides several useful built-in variables:<br><B>NR</B>: Current record (line) number.<br><B>NF</B>: Number of fields in the current record.<br><B>$0</B>: The entire current record (line).<br><B>$1, $2, ...</B>: Individual fields of the current record.<br><B>FS</B>: Input field separator (default is whitespace).<br><B>RS</B>: Input record separator (default is newline).<br><B>OFS</B>: Output field separator (default is space).<br><B>ORS</B>: Output record separator (default is newline).<br><B>FILENAME</B>: Name of the current input file being processed.


title: PATTERNS AND ACTIONS
content:
A <I>pattern</I> can be a regular expression (e.g., <I>/regex/</I>), a relational expression (e.g., <I>$3 > 10</I>), a range (<I>/start_regex/,/end_regex/</I>), or a combination. If no pattern is specified, the action is performed for every line. An <I>action</I> is a sequence of statements enclosed in curly braces <B>{}</B>, which can include printing, variable assignments, conditional logic, loops, and function calls.


title: HISTORY
content:
The <I>awk</I> language was created at Bell Laboratories in 1977 by Alfred Aho, Peter Weinberger, and Brian Kernighan, whose surnames form the acronym. It was designed as a tool for text processing and reporting within the Unix environment, embodying the Unix philosophy of small, specialized tools that can be combined.<br><br>In the mid-1980s, a new version known as <B>nawk</B> (new <I>awk</I>) was developed, introducing significant enhancements such as user-defined functions, dynamic regular expressions, and more robust error handling. Later, the GNU Project developed <B>gawk</B> (GNU <I>awk</I>), aiming for full compatibility with <B>nawk</B> while adding further extensions and making it the most commonly used <I>awk</I> implementation on Linux and other free Unix-like systems today.


title: SYNOPSIS
content:
<b>aws cloudwatch</b> <I>command</I> [<I>options</I>]<br><br>Examples:<br><b>aws cloudwatch</b> <I>put-metric-data</I> --metric-name <I>MyMetric</I> --namespace <I>MyApplication</I> --value <I>10</I><br><b>aws cloudwatch</b> <I>get-metric-statistics</I> --metric-name <I>CPUUtilization</I> --namespace <I>AWS/EC2</I> --start-time <I>YYYY-MM-DDTHH:MM:SSZ</I> --end-time <I>YYYY-MM-DDTHH:MM:SSZ</I> --period <I>300</I> --statistics <I>Average</I><br><b>aws cloudwatch</b> <I>describe-alarms</I> --state-value <I>ALARM</I>


title: PARAMETERS
content:
<b><b>--region</b> <I>region-name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region to send the request to. Overrides configured region.<br><br><b><b>--output</b> <I>format</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format (e.g., <i>json</i>, <i>text</i>, <i>table</i>).<br><br><b><b>--profile</b> <I>profile-name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a named profile to use from your AWS credentials file.<br><br><b><b>--endpoint-url</b> <I>url</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a custom endpoint for the CloudWatch service.<br><br><b><b>--cli-input-json</b> <I>file://path/to/file.json</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads arguments from a JSON file, allowing complex input structures.<br><br><b><b>--query</b> <I>expression</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses JMESPath to filter and format the output of a command.<br><br><b><b>--debug</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Turns on debug logging for the command execution.<br><br><b><b><I>Command-specific options</I></b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Each CloudWatch sub-command (e.g., <i>put-metric-data</i>, <i>get-log-events</i>) has its own set of required and optional parameters, such as metric names, namespaces, timestamps, log group names, filter patterns, and more. These are highly specific to the operation being performed and are too numerous to list exhaustively here.<br><br>


title: DESCRIPTION
content:
The <b>aws cloudwatch</b> command is a sub-command of the AWS Command Line Interface (CLI), providing a powerful way to manage and interact with Amazon CloudWatch directly from your terminal. CloudWatch is a monitoring and observability service that provides data and actionable insights to monitor your applications, understand and respond to system-wide performance changes, and optimize resource utilization. Using the <b>aws cloudwatch</b> command, users can perform a variety of operations, including publishing custom metrics, retrieving statistics for existing metrics, setting up and describing alarms, fetching logs from CloudWatch Logs, and managing dashboards. This command is essential for scripting automated tasks, integrating monitoring into CI/CD pipelines, and performing quick diagnostics and data retrieval without needing to access the AWS Management Console.


title: CAVEATS
content:
Requires the AWS CLI to be installed and configured with appropriate AWS credentials (access key ID and secret access key) and default region. <br>Users must have sufficient IAM permissions to perform the requested CloudWatch operations. <br>API calls are subject to AWS service limits and throttling.


title: AUTHENTICATION AND CONFIGURATION
content:
Before using <b>aws cloudwatch</b>, ensure your AWS CLI is configured. This typically involves running <b>aws configure</b> to set up your access key ID, secret access key, default region, and output format. Credentials can also be managed via environment variables or IAM roles for EC2 instances.


title: ERROR HANDLING
content:
Errors from <b>aws cloudwatch</b> commands are usually returned in JSON format, providing specific error codes and messages that can help in debugging. Common issues include insufficient permissions, incorrect parameters, or throttling.


title: PAGING AND PAGINATION
content:
For commands that return a large number of results (e.g., <i>get-log-events</i>, <i>describe-alarms</i>), the AWS CLI automatically handles pagination to retrieve all results. You can control this behavior using <b>--starting-token</b>, <b>--max-items</b>, and <b>--page-size</b>.


title: HISTORY
content:
The AWS CLI was first released in 2013, providing a unified tool to manage AWS services from the command line. The <b>cloudwatch</b> subcommand has evolved alongside the AWS CloudWatch service, continually adding support for new features like CloudWatch Logs, Contributor Insights, and Anomaly Detection. Its development is ongoing, with regular updates to support new CloudWatch APIs and enhancements to existing functionalities, making it a cornerstone for automation and operations within AWS environments.


title: PARAMETERS
content:
<b>--profile <I>profile_name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a named profile to configure or create. If omitted, the 'default' profile is configured. The CLI will prompt you for the necessary credentials and region for this specific profile.<br><br>


title: DESCRIPTION
content:
The <i>aws configure</i> command is the primary interactive tool used to set up the AWS Command Line Interface (CLI) for the first time or to manage existing configurations. When executed, it prompts the user for four crucial pieces of information: the <i>AWS Access Key ID</i>, the <i>AWS Secret Access Key</i>, the <i>Default region name</i>, and the <i>Default output format</i> (e.g., json, text, table).<br><br>These settings are then automatically saved into configuration files located in the user's home directory, typically within <i>~/.aws/</i>. Specifically, the access key ID and secret access key are stored in <i>~/.aws/credentials</i>, while the default region and output format are stored in <i>~/.aws/config</i>. By default, these settings are saved under the <i>[default]</i> profile.<br><br>This configuration is fundamental because it allows subsequent AWS CLI commands to interact with your AWS account without requiring you to explicitly provide credentials or specify a region for every single command, significantly streamlining your workflow. It's an essential step for anyone starting to use the AWS CLI. While highly convenient for initial setup, it's important to be aware of security best practices concerning the storage of long-term credentials.


title: CAVEATS
content:
<b>Security Risk:</b> Storing permanent AWS Access Key IDs and Secret Access Keys directly on a local machine, especially for root users or long-term credentials, poses a security risk if the machine is compromised. For production environments, it is strongly recommended to use IAM roles, temporary credentials through AWS STS, or AWS SSO for enhanced security.<br><b>Overwriting Default:</b> Running <i>aws configure</i> without the <i>--profile</i> option will overwrite the settings for your existing 'default' profile.<br><b>Not for Scripting:</b> The <i>aws configure</i> command is interactive. For non-interactive or automated configuration (e.g., in scripts), use <i>aws configure set</i> to set individual configuration values, or directly modify the configuration files.


title: CONFIGURATION FILES
content:
The <i>aws configure</i> command populates or updates two primary files in the user's <i>~/.aws/</i> directory:<br><b><i>~/.aws/credentials</i></b>: This file stores your AWS Access Key ID and AWS Secret Access Key, typically under a named profile section (e.g., <i>[default]</i> or <i>[my_profile]</i>).<br><b><i>~/.aws/config</i></b>: This file stores your default AWS region and default output format, as well as other configuration settings for named profiles (e.g., output, region).


title: NAMED PROFILES
content:
<i>aws configure</i> allows you to set up multiple named profiles, each with its own set of credentials and configuration. This is useful for managing access to different AWS accounts, different IAM users within an account, or different environments (e.g., dev, test, prod). To configure a named profile, use the <i>--profile</i> option (e.g., <i>aws configure --profile my_dev_account</i>). Once configured, you can specify which profile to use for any AWS CLI command by adding <i>--profile &lt;profile_name&gt;</i> to the command.


title: HISTORY
content:
The <i>aws configure</i> command has been a cornerstone of the AWS CLI since its early development. It was designed to provide a simple, interactive onboarding experience for users setting up their AWS CLI environment. Over time, while its core functionality has remained consistent, the broader AWS CLI has evolved to include more sophisticated authentication mechanisms, such as <i>aws configure sso</i>, to cater to complex enterprise environments and federated access patterns, without altering the fundamental role of <i>aws configure</i> for basic setup.


title: SEE ALSO
content:
aws configure set(1), aws configure get(1), aws sso configure(1), aws sts get-caller-identity(1), aws (1)


title: SYNOPSIS
content:
<b>aws dynamodb</b> <i>&lt;command&gt;</i> [<i>&lt;options&gt;</i>]<br>or<br><b>aws dynamodb help</b><br><br><i>&lt;command&gt;</i>: Represents a specific DynamoDB operation (e.g., <b>create-table</b>, <b>get-item</b>, <b>list-tables</b>).<br><i>&lt;options&gt;</i>: Consists of global AWS CLI options and operation-specific parameters.


title: PARAMETERS
content:
<b>--region</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region to send the request to. E.g., <b>us-east-1</b>.<br><br><b>--output</b><br>&nbsp;&nbsp;&nbsp;&nbsp;The output format for the command's results. Can be <b>json</b>, <b>text</b>, or <b>table</b>.<br><br><b>--profile</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a specific profile from your shared credential file or configuration file. E.g., <b>my-dev-profile</b>.<br><br><b>--endpoint-url</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overrides the default service endpoint URL. Useful for local DynamoDB instances or custom endpoints.<br><br><b>--no-paginate</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables client-side pagination, causing all results to be returned in a single response.<br><br><b>--cli-input-json</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads arguments for an operation from a specified JSON file. Useful for complex inputs.<br><br><b>--generate-cli-skeleton</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a JSON skeleton for parameters to an operation, which can be used with <b>--cli-input-json</b>.<br><br><b><i>Operation-Specific Parameters</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Note that each specific DynamoDB operation (e.g., <b>create-table</b>, <b>get-item</b>, <b>update-item</b>) has its own unique set of mandatory and optional parameters (e.g., <b>--table-name</b>, <b>--key</b>, <b>--attribute-definitions</b>). These are highly dependent on the chosen operation.<br><br>


title: DESCRIPTION
content:
The <b>aws dynamodb</b> command is a crucial subcommand within the official AWS Command Line Interface (CLI), enabling direct programmatic interaction with Amazon DynamoDB from your Linux terminal. It allows you to perform a wide range of database operations, including creating, listing, describing, and deleting tables; putting, getting, updating, and deleting items; and managing various DynamoDB features like global secondary indexes, streams, and backups. This command provides a powerful alternative to the AWS Management Console for automating DynamoDB tasks, scripting database migrations, and integrating with CI/CD pipelines. It leverages the AWS SDKs underneath, ensuring secure and scalable access to your DynamoDB instances. Proper AWS CLI configuration (including credentials and region) is essential for its successful execution.


title: CAVEATS
content:
The command "aws-dynamodb" as a standalone executable does not exist. It refers to the <b>dynamodb</b> subcommand within the <b>aws</b> CLI tool. Therefore, you must have the AWS CLI installed and configured on your system. Operations specific to DynamoDB, such as <b>create-table</b> or <b>get-item</b>, are invoked as subcommands of <b>aws dynamodb</b>. Each of these specific operations has its own set of mandatory and optional parameters.


title: DISCOVERING OPERATIONS
content:
To see all available DynamoDB operations, run: <br><b>aws dynamodb help</b><br>For details on a specific operation (e.g., <b>create-table</b>), run: <br><b>aws dynamodb create-table help</b>


title: PERMISSIONS
content:
Ensure the AWS credentials configured for your CLI session have the necessary IAM permissions to perform the desired DynamoDB actions (e.g., <b>dynamodb:CreateTable</b>, <b>dynamodb:GetItem</b>).


title: ERROR HANDLING
content:
The AWS CLI returns standard exit codes. A non-zero exit code indicates an error. Error messages provide details on common issues like missing parameters, invalid values, or permission denied errors.


title: HISTORY
content:
The AWS CLI was first released in 2013, providing a unified command-line interface for managing all AWS services. The <b>dynamodb</b> subcommand has been a core component since its early versions, evolving alongside the DynamoDB service itself. Regular updates ensure compatibility with new DynamoDB features and improvements in CLI functionality and user experience.


title: SEE ALSO
content:
aws(1): The main entry point for the AWS Command Line Interface., aws configure(1): Configures AWS credentials and default settings., jq(1): A lightweight and flexible command-line JSON processor, often used with AWS CLI output.


title: SYNOPSIS
content:
aws <i>ec2</i> <br> [<i>subcommand</i>] <br> [<i>options</i>] <br> [<i>--output <format></i>] <br> [<i>--region <region></i>] <br> [<i>--profile <profile></i>]


title: PARAMETERS
content:
<b><i>run-instances</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Launches one or more EC2 instances based on specified configurations (e.g., image ID, instance type, security group, key pair).<br><br><b><i>describe-instances</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves detailed information about one or more EC2 instances, allowing filtering by instance IDs, tags, or other attributes.<br><br><b><i>stop-instances</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Stops one or more running EC2 instances. Stopped instances retain their root device volume and most of their attributes.<br><br><b><i>start-instances</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Starts one or more stopped EC2 instances.<br><br><b><i>terminate-instances</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Terminates one or more EC2 instances. Terminated instances cannot be restarted and their data on ephemeral storage is lost.<br><br><b><i>create-volume</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates an Amazon EBS (Elastic Block Store) volume with a specified size, availability zone, and type.<br><br><b><i>attach-volume</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Attaches an Amazon EBS volume to a running instance.<br><br><b><i>describe-security-groups</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Describes one or more EC2 security groups, which control inbound and outbound traffic for instances.<br><br><b><i>authorize-security-group-ingress</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds an ingress (inbound) rule to a security group.<br><br>


title: DESCRIPTION
content:
The <b>aws ec2</b> command is a fundamental part of the AWS Command Line Interface (CLI), providing a powerful and direct way to interact with Amazon Elastic Compute Cloud (EC2) services from your terminal. It enables users to automate, script, and programmatically manage their EC2 instances, Amazon EBS volumes, security groups, key pairs, and other related resources. <br><br>Through <b>aws ec2</b>, you can perform a wide range of operations, including launching new instances (<i>run-instances</i>), retrieving detailed information about existing instances (<i>describe-instances</i>), stopping or terminating instances (<i>stop-instances</i>, <i>terminate-instances</i>), creating and attaching volumes (<i>create-volume</i>, <i>attach-volume</i>), and configuring network settings. <br><br>The AWS CLI supports various output formats like JSON, text, and table, making it easy to integrate with other command-line tools or scripts. It is an indispensable tool for developers, DevOps engineers, and system administrators who manage cloud infrastructure in AWS.


title: CAVEATS
content:
Using <b>aws ec2</b> requires the AWS CLI to be installed and properly configured with valid AWS credentials. <br><br>All actions performed via <b>aws ec2</b> interact directly with your AWS account and may incur charges, so it's crucial to understand the cost implications of operations like launching instances or creating volumes. <br><br>Proper IAM permissions are essential for each command; insufficient permissions will result in 'Access Denied' errors. <br><br>The command's output is typically JSON, which often requires tools like <i>jq(1)</i> for effective parsing and filtering in shell scripts.


title: <B>AUTHENTICATION AND CONFIGURATION</B>
content:
Before using <b>aws ec2</b> commands, you must configure your AWS CLI. This is typically done by running <i>aws configure</i>, which prompts for your AWS Access Key ID, Secret Access Key, default region, and preferred output format. These credentials and configurations are stored in <i>~/.aws/credentials</i> and <i>~/.aws/config</i>. Alternatively, you can use environment variables (e.g., <i>AWS_ACCESS_KEY_ID</i>, <i>AWS_SECRET_ACCESS_KEY</i>, <i>AWS_REGION</i>) or leverage IAM roles for EC2 instances, which automatically provide temporary credentials.


title: <B>ERROR HANDLING AND DEBUGGING</B>
content:
If a command fails, <b>aws ec2</b> often provides detailed error messages. Using the <i>--debug</i> option can yield even more verbose output, including the full HTTP request and response, which is invaluable for troubleshooting connectivity issues, permission problems, or incorrect parameters. Always check the AWS CLI documentation for specific error codes and their remedies.


title: HISTORY
content:
The AWS CLI, which includes the <b>aws ec2</b> subcommand, was initially released by Amazon Web Services in 2013. Prior to its introduction, users often relied on separate command-line tools for different AWS services or specific SDKs. The AWS CLI consolidated these functionalities into a single, unified command-line interface, significantly improving scripting capabilities and ease of management for AWS resources. Its development has focused on consistency across services, supporting various authentication methods, and providing robust filtering and output options, making it a cornerstone for automation in AWS environments.


title: SYNOPSIS
content:
<b>aws kinesis</b> <i>&lt;subcommand&gt;</i> [<i>&lt;parameters&gt;</i>] [<i>&lt;global-options&gt;</i>]<br><br>Examples:<br><i>aws kinesis create-stream --stream-name my-data-stream --shard-count 1</i><br><i>aws kinesis put-record --stream-name my-data-stream --partition-key user1 --data SGVsbG8gS2luZXNpcyE=</i>


title: PARAMETERS
content:
<b><i>--region &lt;region-name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region to send the request to (e.g., us-east-1). This is a global AWS CLI option.<br><br><b><i>--output &lt;output-format&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format (e.g., json, text, table). This is a global AWS CLI option.<br><br><b><i>--profile &lt;profile-name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a specific profile from the AWS credential file. This is a global AWS CLI option.<br><br><b><i>--endpoint-url &lt;url&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an override URL for the service endpoint. This is a global AWS CLI option.<br><br><b><i>--stream-name &lt;string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the Kinesis data stream. Required for most stream-related operations.<br><br><b><i>--shard-count &lt;integer&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The number of shards in the stream. Used specifically with the <b>create-stream</b> subcommand.<br><br><b><i>--partition-key &lt;string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A hash value used to determine which shard a record belongs to. Required for <b>put-record</b>.<br><br><b><i>--data &lt;blob&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The data blob to put into the record, typically Base64 encoded. Required for <b>put-record</b>.<br><br><b><i>--shard-id &lt;string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The unique identifier of the shard. Used with operations like <b>get-shard-iterator</b> or <b>get-records</b>.<br><br><b><i>--shard-iterator-type &lt;string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Determines where to start reading records within a shard (e.g., AT_SEQUENCE_NUMBER, LATEST). Used with <b>get-shard-iterator</b>.<br><br><b><i>--limit &lt;integer&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The maximum number of records to return. Used with <b>get-records</b>.<br><br>


title: DESCRIPTION
content:
The <b>aws kinesis</b> command is a crucial component of the AWS Command Line Interface (CLI), providing a powerful interface to interact with various AWS Kinesis services directly from your terminal. Kinesis is a scalable, real-time data streaming service designed to process large streams of data. The <b>aws kinesis</b> command allows users to perform operations such as creating and deleting data streams, putting records into streams, retrieving records from shards, and managing stream consumers.<br><br>It supports Kinesis Data Streams for real-time data ingestion, Kinesis Firehose for data delivery to destinations like S3 or Redshift, and Kinesis Video Streams for video data. This CLI tool is essential for automation, scripting, and quick administrative tasks related to Kinesis resources, offering flexibility that complements the AWS Management Console and SDKs. It streamlines the process of managing streaming data workflows, enabling developers and administrators to integrate Kinesis into their existing CI/CD pipelines or operational scripts.


title: CAVEATS
content:
<b>IAM Permissions</b>: Users must have appropriate AWS Identity and Access Management (IAM) permissions to perform Kinesis operations. Lack of permissions will result in 'Access Denied' errors.<br><br><b>Region Specificity</b>: Kinesis streams are region-specific. Operations must be targeted to the correct AWS region using the '<i>--region</i>' option or environment variables.<br><br><b>Data Encoding</b>: When putting records, the '<i>--data</i>' parameter expects Base64 encoded input. The CLI handles this for simple strings, but for binary data, explicit encoding is required.<br><br><b>Throughput Limits</b>: Kinesis streams have throughput limits per shard. Exceeding these limits can lead to 'ProvisionedThroughputExceededException'.<br><br><b>Asynchronous Operations</b>: Many Kinesis operations (like stream creation or deletion) are asynchronous, meaning the command returns quickly but the resource change takes time to propagate.


title: OUTPUT FILTERING AND QUERYING
content:
The AWS CLI supports '<i>--query</i>' and '<i>--output</i>' options, allowing users to filter and reformat the JSON output using JMESPath expressions, which is extremely powerful for scripting and automation.


title: PAGINATION
content:
For commands that return large sets of data (e.g., '<i>list-streams</i>', '<i>get-records</i>'), the CLI automatically handles pagination. Users can also control pagination using '<i>--starting-token</i>', '<i>--max-items</i>', and '<i>--page-size</i>' options.


title: HISTORY
content:
AWS Kinesis was launched in 2013 as a fully managed service for real-time processing of streaming data, initially focusing on Kinesis Data Streams. AWS has since expanded the Kinesis family to include Kinesis Firehose (2015), Kinesis Data Analytics (2016), and Kinesis Video Streams (2017). The <b>aws</b> CLI integration for Kinesis has evolved alongside the service, providing comprehensive command-line access to these new capabilities, becoming an indispensable tool for developers and operators managing streaming data workloads on AWS.


title: SYNOPSIS
content:
<B>aws lambda</B> <I><subcommand></I> [<I>options</I>] [<I>arguments</I>]<br><br>Common Subcommands:<br><B>aws lambda create-function</B> <I>[--function-name <value>] [--runtime <value>] [--role <value>] ...</I><br><B>aws lambda update-function-code</B> <I>[--function-name <value>] [--zip-file <value>] ...</I><br><B>aws lambda invoke</B> <I>[--function-name <value>] [--payload <value>] [--invocation-type <value>] ...</I><br><B>aws lambda list-functions</B> <I>[--max-items <value>] ...</I><br><B>aws lambda delete-function</B> <I>[--function-name <value>] ...</I><br><br>General AWS CLI Options (applicable to <B>aws lambda</B> subcommands):<br><B>aws</B> ... <I>[--region <value>]</I> <I>[--output <value>]</I> <I>[--profile <value>]</I> ...


title: PARAMETERS
content:
<b>--region <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region to send the request to (e.g., us-east-1).<br><br><b>--output <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Determines the output format (e.g., json, text, table).<br><br><b>--profile <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a specific named profile from your credentials file.<br><br><b>--endpoint-url <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overrides the default service endpoint URL.<br><br><b>--cli-input-json <value></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads arguments from a JSON string or file.<br><br><b>--generate-cli-skeleton</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prints a JSON skeleton to standard output, helpful for creating input for --cli-input-json.<br><br><b><subcommand> specific parameters</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Each Lambda subcommand has its own set of unique parameters for function names, code, configurations, etc. Refer to the AWS CLI documentation for comprehensive details.<br><br>


title: DESCRIPTION
content:
The <I>aws lambda</I> command is a sub-command of the <I>AWS Command Line Interface (AWS CLI)</I>, a unified tool for managing your AWS services. It provides a comprehensive set of commands for interacting with the AWS Lambda service, which is a serverless compute service that runs your code in response to events without provisioning or managing servers. Users can perform various operations such as creating, updating, invoking, and deleting Lambda functions; managing event source mappings; configuring function permissions; and retrieving function logs and configurations. This command simplifies automation of Lambda-related tasks, integration into CI/CD pipelines, and enables programmatic control over serverless resources directly from the command line or scripts. It requires the AWS CLI to be installed and configured with appropriate AWS credentials.


title: CAVEATS
content:
<I>The aws lambda command is not a standalone Linux command but a subcommand of the AWS CLI tool.</I><br><I>It requires the AWS CLI to be installed and configured with valid AWS credentials and permissions to interact with the Lambda service.</I><br><I>Internet connectivity is essential for communication with AWS services.</I><br><I>Understanding of AWS Identity and Access Management (IAM) is crucial for managing permissions securely for Lambda functions and resources.</I>


title: INSTALLATION
content:
The AWS CLI (v2 recommended) can be installed on Linux by downloading the official installer from AWS. For example: <I>curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" <br>unzip awscliv2.zip <br>sudo ./aws/install</I>


title: COMMON USE CASES
content:
Deploying new Lambda functions and updating existing function code and configuration.<br>Invoking Lambda functions directly for testing or as part of automated workflows.<br>Listing, describing, and deleting Lambda functions and event source mappings.<br>Configuring permissions and environment variables for serverless applications.<br>Automating serverless application deployments within CI/CD pipelines.


title: HISTORY
content:
<I>AWS Lambda itself was launched in 2014, pioneering the serverless computing paradigm.</I><br><I>The AWS CLI, which provides the <B>aws lambda</B> functionality, was first released in 2013 by Amazon Web Services.</I><br><I>It was developed to provide a consistent and unified command-line interface for managing all AWS services, abstracting away the underlying API complexities.</I><br><I>Initially, managing AWS resources often involved custom scripts or the AWS Management Console. The CLI brought robust scripting capabilities and automation to system administrators and developers.</I><br><I>The <B>aws lambda</B> commands have evolved significantly with the Lambda service, adding support for new runtimes, layers, provisioned concurrency, and other features as they were introduced.</I><br><I>Its usage has become indispensable for DevOps practices, CI/CD pipelines, and advanced automation of serverless deployments.</I>


title: SEE ALSO
content:
aws(1): The main AWS Command Line Interface tool., aws s3(1): Manage Amazon S3 cloud storage., aws iam(1): Manage AWS Identity and Access Management., curl(1): Often used in conjunction for interacting with API Gateway endpoints that front Lambda functions.


title: SYNOPSIS
content:
<pre><code>aws lightsail &lt;command&gt; [options]</code></pre><br>Examples:<br><ul><li><code>aws lightsail get-instances</code></li><li><code>aws lightsail create-instance --instance-name <I>my-new-server</I> --blueprint-id <I>wordpress</I> --bundle-id <I>nano_2_0</I> --availability-zone <I>us-east-1a</I></code></li><li><code>aws lightsail stop-instance --instance-name <I>my-stopped-server</I></code></li></ul>


title: PARAMETERS
content:
<b><I>Global AWS CLI Options:</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;These options affect how the AWS CLI interacts with AWS services in general, including Lightsail operations.<br><br><b>--region <I>region-name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region to send the request to (e.g., <I>us-east-1</I>). Overrides default configured region.<br><br><b>--output <I>output-format</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format (e.g., <I>json</I>, <I>text</I>, <I>table</I>). Overrides default configured output format.<br><br><b>--profile <I>profile-name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a specific profile from your credential file to manage AWS credentials and configuration.<br><br><b>--cli-input-json <I>file://path/to/json</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads command arguments from a JSON file, useful for complex or numerous parameters.<br><br><b><I>Common Lightsail Subcommand Parameters (examples):</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The `aws lightsail` command consists of many subcommands (e.g., `create-instance`, `get-instances`, `update-domain-entry`), each with its own extensive set of specific parameters. Listing all is impractical; below are examples of common Lightsail-specific parameters you might encounter.<br><br><b>--instance-name <I>name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The unique name of the Lightsail instance.<br><br><b>--blueprint-id <I>id</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The ID for the virtual private server image (e.g., <I>wordpress</I>, <I>ubuntu_22_04</I>, <I>lamp</I>).<br><br><b>--bundle-id <I>id</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The ID for the virtual private server bundle (e.g., <I>nano_2_0</I>, <I>medium_2_0</I>) which defines CPU, RAM, and storage.<br><br><b>--availability-zone <I>zone</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The Availability Zone in which to create the instance (e.g., <I>us-east-1a</I>).<br><br><b>--key-pair-name <I>name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the key pair to use for SSH access to Linux instances.<br><br>


title: DESCRIPTION
content:
The `aws lightsail` command is a subcommand of the official <I>AWS Command Line Interface</I> (<I>AWS CLI</I>). It provides a programmatic interface to interact with and manage <I>AWS Lightsail</I> resources directly from your terminal.<BR><BR><I>AWS Lightsail</I> is a simplified cloud platform that offers bundles of compute, storage, and networking capacity for a low, predictable monthly price. It's designed to make it easy for developers, small businesses, and students to get started with cloud computing without deep knowledge of complex AWS services.<BR><BR>Using the `aws lightsail` command, users can automate various tasks such as creating, starting, stopping, and deleting instances, databases, load balancers, and network resources. It also allows for managing domains, DNS records, and object storage buckets. This command-line access is essential for scripting, integration with CI/CD pipelines, and efficient management of numerous Lightsail resources. It abstracts away the need to use the AWS Management Console for routine operations, offering greater control and automation capabilities.


title: CAVEATS
content:
<ul><li>Requires the <I>AWS CLI</I> to be installed and configured with appropriate credentials and region settings.</li><li>Operations incur costs based on the <I>AWS Lightsail</I> pricing model. Ensure you understand the pricing before provisioning resources.</li><li>Permissions: The AWS credentials used must have the necessary <I>IAM</I> (Identity and Access Management) permissions to perform the requested <I>Lightsail</I> actions.</li><li>Rate Limiting: AWS APIs have rate limits; frequent or rapid calls might result in throttling errors. Implement retry mechanisms for robust scripting.</li><li>Learning Curve: While <I>Lightsail</I> simplifies cloud, mastering the various subcommands and their specific parameters requires consulting the official <I>AWS CLI</I> Lightsail documentation.</li></ul>


title: <B><I>CONFIGURATION</I></B>
content:
Before using `aws lightsail`, the <I>AWS CLI</I> must be configured. This typically involves running `aws configure` and providing your AWS Access Key ID, Secret Access Key, default region, and default output format. Alternatively, environment variables (`AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_DEFAULT_REGION`) or <I>IAM</I> roles can be used for authentication and configuration.


title: <B><I>COMMON USE CASES</I></B>
content:
The `aws lightsail` command is frequently used for:<br><ul><li>Rapid deployment of web applications (e.g., WordPress, Joomla, LAMP stacks).</li><li>Automating server provisioning for development and testing environments.</li><li>Managing DNS records and domain registrations.</li><li>Creating and restoring snapshots of instances and databases.</li><li>Monitoring resource usage and status, and setting up alarms.</li><li>Configuring networking features like static IPs, firewalls, and load balancers.</li></ul>


title: HISTORY
content:
<I>AWS Lightsail</I> was officially launched by <I>Amazon Web Services</I> in November 2016, aiming to simplify cloud adoption for users needing basic compute and storage. Since its inception, the `aws lightsail` subcommand has been an integral part of the <I>AWS CLI</I>, providing immediate command-line access to new features as they were introduced. This includes support for managed databases (2018), load balancers (2018), object storage (2019), and container services (2020), with the CLI commands continually updated to reflect these expanded capabilities. Its development focuses on maintaining parity with the Console's features, enabling full automation of <I>Lightsail</I> resource management and integration into developer workflows.


title: SEE ALSO
content:
<a href="https://docs.aws.amazon.com/cli/latest/reference/lightsail/index.html">aws lightsail (AWS CLI Reference)</a>, <a href="https://docs.aws.amazon.com/cli/latest/reference/index.html">aws(1)</a> - The main AWS CLI command., <a href="https://man7.org/linux/man-pages/man1/ssh.1.html">ssh(1)</a> - For securely connecting to Lightsail instances., <a href="https://man7.org/linux/man-pages/man1/scp.1.html">scp(1)</a> - For transferring files to/from Lightsail instances., <a href="https://man7.org/linux/man-pages/man1/curl.1.html">curl(1)</a> - For direct API interaction (less common for Lightsail than CLI, but fundamental for web requests).


title: PARAMETERS
content:
<b><I>command</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Represents a specific <I>QuickSight API operation</I> to be performed. Examples include 'create-dashboard', 'list-users', 'update-data-set', etc. Each command has its own set of specific parameters.<br><br><b><I>options</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;These are parameters specific to the chosen QuickSight command. They define the details of the operation, such as '--dashboard-id', '--aws-account-id', '--name', '--definition', etc. Common options also include '--output' (e.g., json, text, table) and '--region'.<br><br><b>create-dashboard</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new QuickSight dashboard with specified properties.<br><br><b>describe-dashboard</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves detailed information about a specific QuickSight dashboard.<br><br><b>list-dashboards</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all QuickSight dashboards in the specified AWS account.<br><br><b>create-data-set</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new QuickSight dataset, defining its schema and connection to a data source.<br><br><b>describe-data-set</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves detailed information about a specific QuickSight dataset.<br><br><b>list-data-sets</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all QuickSight datasets in the specified AWS account.<br><br><b>create-data-source</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new QuickSight data source connection (e.g., S3, Redshift, SQL Server).<br><br><b>list-data-sources</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all QuickSight data sources in the specified AWS account.<br><br><b>register-user</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Registers a new user to access QuickSight within the account.<br><br><b>list-users</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all QuickSight users registered in the specified AWS account.<br><br><b>get-dashboard-embed-url</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Generates a URL that can be used to embed a QuickSight dashboard into an application.<br><br>


title: DESCRIPTION
content:
The <i>aws quicksight</i> command is a sub-command of the <I>AWS Command Line Interface (CLI)</I>, providing a programmatic interface to interact with <I>Amazon QuickSight</I>. QuickSight is a cloud-native business intelligence (BI) service that allows users to build visualizations, perform ad-hoc analysis, and get business insights from their data. The CLI integration enables automation of various QuickSight tasks, including managing users, groups, dashboards, analyses, datasets, data sources, themes, and templates. It's widely used for scripting, integrating with CI/CD pipelines, and automating QuickSight resource provisioning and management.


title: CAVEATS
content:
<b>1. AWS CLI Installation:</b> The <i>aws quicksight</i> command requires the AWS CLI to be installed and properly configured with AWS credentials.<br><b>2. IAM Permissions:</b> The AWS Identity and Access Management (IAM) user or role executing the command must have the necessary QuickSight permissions to perform the requested operation.<br><b>3. Region Specificity:</b> QuickSight resources are region-specific. Ensure the AWS region is correctly configured or specified using the <i>--region</i> option.<br><b>4. API Limits:</b> Be aware of QuickSight API rate limits when scripting extensive operations.<br><b>5. Output Paging:</b> For commands that return a large number of results (e.g., <i>list-dashboards</i>), use <i>--starting-token</i> and <i>--max-items</i> for pagination.


title: AUTHENTICATION AND CONFIGURATION
content:
Before using <i>aws quicksight</i>, ensure your AWS CLI is configured with valid AWS credentials (<i>aws configure</i>) that have the necessary IAM permissions for QuickSight operations. The CLI automatically picks up credentials from environment variables, shared credential files, or IAM roles.


title: COMMON GLOBAL OPTIONS
content:
Many <i>aws quicksight</i> commands support global AWS CLI options like <i>--output json|text|table</i> to control the output format, and <i>--query</i> for JMESPath filtering of results. Using <i>--output json</i> with tools like <i>jq</i> is common for advanced processing.


title: HISTORY
content:
Amazon QuickSight was first announced at AWS re:Invent in October 2015 and became generally available in November 2016. The <i>aws quicksight</i> CLI commands were subsequently integrated into the main AWS CLI tool, allowing developers and administrators to programmatically interact with the service. Its development has closely mirrored the evolution of QuickSight itself, with new commands and parameters added to support features like embedded analytics, ML insights, and enhanced data connectivity, reflecting its growing role as a key AWS BI service.


title: SYNOPSIS
content:
<b>aws route53</b> <I>&lt;subcommand&gt;</I> [<i>&lt;options&gt;</i>]<br><br>Examples:<br>  <b>aws route53</b> <i>list-hosted-zones</i><br>  <b>aws route53</b> <i>get-change</i> --id <i>&lt;change-id&gt;</i><br>  <b>aws route53</b> <i>change-resource-record-sets</i> --hosted-zone-id <i>&lt;zone-id&gt;</i> --change-batch file://<i>&lt;path/to/changes.json&gt;</i>


title: PARAMETERS
content:
<b><i>&lt;subcommand&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the particular Route 53 API action to perform, e.g., <I>list-hosted-zones</I>, <I>change-resource-record-sets</I>, <I>create-hosted-zone</I>. Each subcommand has its own set of specific parameters.<br><br><b>--region <i>&lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region to send the request to. Although Route 53 is a global service, this option can be used for consistency with other AWS CLI commands.<br><br><b>--output <i>&lt;format&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Determines the output format of the command's response. Common formats include <I>json</I>, <I>text</I>, and <I>table</I>.<br><br><b>--profile <i>&lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the named profile from your AWS credentials file to use for authentication.<br><br><b>--endpoint-url <i>&lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overrides the default service endpoint URL for Route 53.<br><br><b>--no-paginate</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables pagination for commands that return large sets of results, causing all results to be returned in a single call.<br><br><b>--cli-input-json <i>&lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Reads command arguments from a JSON string or a file path (e.g., <I>file://input.json</I>). Useful for complex input objects like change batches.<br><br><b>--query <i>&lt;value&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies a JMESPath query to filter and transform the command's output, allowing for precise data extraction.<br><br>


title: DESCRIPTION
content:
The <b>aws-route53</b> command, which in practical Linux environments refers to the <I>aws route53</I> subcommand of the AWS Command Line Interface (CLI), is a powerful tool for programmatically managing Amazon Route 53. Route 53 is a highly available and scalable cloud Domain Name System (DNS) web service. This command allows users to perform a wide range of DNS-related operations directly from their Linux terminal, scripts, or automated workflows. It enables the creation, deletion, and modification of hosted zones, management of various types of DNS records (A, AAAA, CNAME, MX, TXT, SRV, NS, PTR, SOA, SPF, CAA), and configuration of traffic policies such as latency-based, failover, geolocation, and weighted routing. Additionally, it supports registering and managing domain names, and configuring health checks to monitor the health of resources. The <I>aws route53</I> command is essential for automating DNS infrastructure management, integrating with CI/CD pipelines, and ensuring efficient and reliable resolution of domain names to IP addresses or other resources within the AWS ecosystem and beyond.


title: CAVEATS
content:
The <b>aws route53</b> command requires proper AWS CLI installation and configuration, including valid AWS access keys and secret keys. Users must have appropriate IAM permissions to perform specific Route 53 actions. Operations like updating resource record sets often require complex JSON input, demanding a good understanding of DNS record types and AWS Route 53 API structure. Be mindful of DNS propagation times, as changes made via Route 53 commands may take time to reflect globally. Careless modifications can disrupt DNS resolution, leading to service outages.


title: COMMON USE CASES
content:
Typical applications of <b>aws route53</b> include:<br>  - Automating DNS record updates in CI/CD pipelines.<br>  - Programmatically creating or deleting hosted zones for new environments.<br>  - Setting up complex traffic routing policies (e.g., failover, latency, geolocation).<br>  - Managing domain registration and renewal processes.<br>  - Scripting health check configurations for resource monitoring.


title: PREREQUISITES
content:
To use <b>aws route53</b>, ensure you have:<br>  - The AWS CLI installed on your Linux system.<br>  - AWS credentials configured (via <I>aws configure</I> or environment variables) with sufficient IAM permissions for Route 53 actions.


title: HISTORY
content:
The AWS Command Line Interface (CLI) was first launched in 2013, providing a unified tool to manage AWS services. Amazon Route 53 itself was launched earlier in 2010. Since its inception, the <b>aws route53</b> subcommand has continuously evolved alongside the Route 53 service, adding support for new features such as traffic policies, domain registration enhancements, and new record types. Its development has focused on providing a comprehensive, consistent, and scriptable interface to all Route 53 functionalities, making it a cornerstone for DevOps practices and automated cloud infrastructure management.


title: PARAMETERS
content:
<b>ls</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists S3 objects and common prefixes in a bucket or under a specified prefix. Similar to 'ls' for local file systems.<br><br><b>cp</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Copies local files to S3, S3 objects to local files, or S3 objects between buckets. Supports recursive copies for directories (<b>--recursive</b>).<br><br><b>mv</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Moves local files to S3, S3 objects to local files, or S3 objects between buckets. This operation performs a copy followed by a delete.<br><br><b>rm</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes S3 objects. Supports recursive removal for prefixes and objects within a bucket (<b>--recursive</b>).<br><br><b>sync</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Recursively copies new and updated files from a source directory to a destination, or vice versa, ensuring they are in sync. Often used for backups or keeping local copies up-to-date with S3.<br><br><b>mb</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Makes (creates) a new S3 bucket.<br><br><b>rb</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes (deletes) an S3 bucket. A bucket must be empty before it can be removed, unless the <b>--force</b> option is used.<br><br>


title: DESCRIPTION
content:
The <b>aws s3</b> command is a high-level interface within the <b>AWS Command Line Interface (CLI)</b>, designed for simplified management of <b>Amazon Simple Storage Service (S3)</b> buckets and objects. It abstracts away many complexities of the underlying S3 API, providing familiar file system-like commands such as <b>cp</b>, <b>ls</b>, and <b>sync</b>.<br><br>This command suite facilitates common S3 operations like copying files, syncing local directories with S3 buckets, listing bucket contents, and creating or deleting buckets. It automatically handles features like multipart uploads for large files, robust error retries, and efficient data transfers, making it a powerful and convenient tool for interacting with your cloud storage directly from the terminal. It's ideal for scripting and automating S3-related tasks.


title: CAVEATS
content:
<ul><li>Requires the <b>AWS CLI</b> to be installed and configured with appropriate AWS credentials and region settings.</li><li>Operations are subject to <b>IAM permissions</b>; incorrect permissions can lead to 'Access Denied' errors or unintended public exposure of data.</li><li>S3 storage and data transfer incur costs based on AWS pricing models.</li><li>High-volume operations might be subject to <b>S3 API rate limits</b>.</li><li>Errors related to file paths or bucket names (e.g., region mismatch for buckets) can be common.</li></ul>


title: <B>CONFIGURATION AND CREDENTIALS</B>
content:
Before using <b>aws s3</b>, you must configure your AWS credentials and default region using <b>aws configure</b>. This typically involves setting up your access key ID, secret access key, and default region in <i>~/.aws/credentials</i> and <i>~/.aws/config</i>.


title: <B>S3 OBJECT VERSIONING</B>
content:
If S3 bucket versioning is enabled, operations like <b>rm</b> will create new 'delete markers' rather than permanently deleting objects, preserving previous versions. To permanently delete all versions, additional steps or <b>s3api</b> commands might be required.


title: <B>MULTIPART UPLOADS</B>
content:
For large files (typically over 5MB), <b>aws s3 cp</b> and <b>aws s3 sync</b> automatically utilize S3's multipart upload capability, splitting the file into smaller parts for more efficient and robust transfers. This also allows for pausing and resuming uploads in some scenarios.


title: HISTORY
content:
The <b>AWS Command Line Interface (CLI)</b> was first released in 2013, aiming to provide a unified tool for interacting with all AWS services. The <b>aws s3</b> high-level commands were a significant addition, designed to simplify common S3 operations by offering a more intuitive, file system-like experience compared to the granular <b>aws s3api</b> commands. Its development focused on ease of use, robust error handling, and efficiency, making it a cornerstone for cloud storage management from the command line.


title: SYNOPSIS
content:
<B>aws s3 cp</B> <I>&lt;SOURCE&gt; &lt;TARGET&gt;</I> [<I>options</I>]<br><br>Examples:<br><B>aws s3 cp</B> <I>my-local-file.txt</I> s3://<I>my-bucket/</I><br><B>aws s3 cp</B> s3://<I>my-bucket/my-remote-file.txt</I> <I>.</I><br><B>aws s3 cp</B> s3://<I>source-bucket/data/</I> s3://<I>target-bucket/backup/</I> --recursive


title: PARAMETERS
content:
<b>--recursive</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Recursively copy contents of directories. Required when copying a directory to or from S3.<br><br><b>--exclude "pattern"</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Exclude files or objects that match the specified pattern from the copy operation.<br><br><b>--include "pattern"</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Don't exclude files or objects that match the specified pattern. Used in conjunction with <I>--exclude</I> to refine filtering.<br><br><b>--sse</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies that the object should be encrypted at rest in S3 using Amazon S3-managed encryption keys (SSE-S3).<br><br><b>--sse-kms-key-id <key-id></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the KMS key ID to use for server-side encryption with AWS KMS (SSE-KMS).<br><br><b>--storage-class <class></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the storage class for the uploaded objects (e.g., STANDARD, STANDARD_IA, ONEZONE_IA, GLACIER, DEEP_ARCHIVE).<br><br><b>--acl <acl></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the access control list (ACL) for the copied objects (e.g., private, public-read, bucket-owner-full-control).<br><br><b>--metadata <key=value,...></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets user-defined metadata for the object being copied.<br><br><b>--dryrun</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the operations that would be performed without actually executing them.<br><br><b>--quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses all output except for errors, making the command less verbose.<br><br>


title: DESCRIPTION
content:
The <I>aws s3 cp</I> command is a high-level command within the AWS Command Line Interface (AWS CLI) designed for copying objects. It facilitates the transfer of local files or directories to Amazon S3 buckets, S3 objects to local files or directories, and S3 objects between different S3 buckets. This command is highly versatile, supporting recursive copying for entire directories, filtering files based on include/exclude patterns, and various S3-specific features such as server-side encryption, setting storage classes, and managing access control lists (ACLs). For large files, it automatically handles multipart uploads, ensuring efficient and robust data transfer operations, along with automatic retries for failed transfers.


title: CAVEATS
content:
<ul><li><B>Eventual Consistency:</B> Amazon S3 is an eventually consistent service for certain operations (e.g., PUTS of new objects in some regions, or eventual consistency for overwrite PUTS and DELETES). A read immediately after a write might not reflect the latest changes.</li><li><B>Large File Transfers:</B> While <I>aws s3 cp</I> automatically handles multipart uploads for large files, network disruptions during transfers can lead to retries, potentially extending the total transfer time.</li><li><B>Pricing Implications:</B> Copying data into or out of S3, especially across different AWS regions or using different storage classes, incurs data transfer and storage costs. Users should be aware of S3 pricing.</li><li><B>Permissions:</B> Proper AWS Identity and Access Management (IAM) permissions are critical. The AWS CLI user or role must have sufficient permissions (<I>s3:GetObject</I> and <I>s3:PutObject</I>, plus <I>s3:ListBucket</I> for recursive operations) on both source and target paths.</li></ul>


title: COMMON USE CASES
content:
<ul><li><B>Backup and Archiving:</B> Copying local data to S3 for durable, secure, and cost-effective backups and long-term archiving.</li><li><B>Data Migration:</B> Transferring large datasets between on-premises storage systems and S3, or moving data between different S3 buckets or AWS regions.</li><li><B>Static Website Hosting:</B> Uploading static website content (HTML, CSS, JavaScript, images) to an S3 bucket configured for static website hosting.</li><li><B>Data Ingestion:</B> Copying application logs, sensor data, or other generated data into S3 for subsequent processing, analysis, or machine learning workflows.</li></ul>


title: AUTHENTICATION AND CONFIGURATION
content:
<B>aws s3 cp</B> operates using the credentials configured for the AWS CLI. These credentials can be provided through environment variables (<I>AWS_ACCESS_KEY_ID</I>, <I>AWS_SECRET_ACCESS_KEY</I>), a shared credentials file (<I>~/.aws/credentials</I>), or automatically assumed IAM roles when running on an EC2 instance or within other AWS services. The associated principal (user or role) must possess the necessary IAM permissions to read from the source and write to the destination S3 locations.


title: HISTORY
content:
The <B>aws s3 cp</B> command is a core component of the AWS Command Line Interface (AWS CLI), which was first released by Amazon Web Services in 2013. The AWS CLI was developed to provide a unified, programmatic interface for interacting with AWS services from the command line. The high-level <I>s3</I> commands, including <I>cp</I>, were specifically designed to offer a user-friendly and familiar syntax for common Amazon S3 operations, abstracting away the complexities of the underlying S3 API. Since its initial release, the AWS CLI has undergone continuous development, with regular updates introducing new features, performance enhancements, and stability improvements, reflecting the continuous evolution of the S3 service itself.


title: SYNOPSIS
content:
<b>aws s3 ls</b> [<I>s3://BUCKET[/PREFIX]</I>] [<I>options</I>]<br><br>Examples:<br>  <I>aws s3 ls</I>                                         (Lists all S3 buckets in your account)<br>  <I>aws s3 ls s3://my-example-bucket/</I>                       (Lists objects in 'my-example-bucket')<br>  <I>aws s3 ls s3://my-example-bucket/logs/ --recursive</I>    (Lists objects recursively in 'my-example-bucket/logs/')


title: PARAMETERS
content:
<b><I>s3://BUCKET[/PREFIX]</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;An optional S3 URI specifying the bucket or prefix (folder) whose contents you want to list. If omitted, the command lists all S3 buckets accessible by your configured AWS credentials.<br><br><b><b>--recursive</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists the contents of the specified S3 path (bucket or prefix) recursively, including all objects within sub-folders. This option is crucial for deep directory listings.<br><br><b><b>--summarize</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a summary at the end of the output, which includes the total number of objects and their combined size. This is useful for getting a quick overview of a bucket's or prefix's contents.<br><br><b><b>--human-readable-sizes</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays object sizes in human-readable units (e.g., KB, MB, GB) instead of raw bytes, making the output much easier to read and interpret for humans.<br><br><b><b>--request-payer</b> <I>requester</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies that the requester will pay for the request and data transfer costs. This option is necessary when attempting to access buckets that are configured for 'Requester Pays'.<br><br><b><b>--profile</b> <I>profile-name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the named profile from your AWS credentials file to use for this command. This is particularly useful for managing multiple AWS accounts or roles from a single AWS CLI installation.<br><br><b><b>--region</b> <I>region-name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region to send the request to. This option overrides any default region configured in your AWS CLI profile or environment variables for this specific command execution.<br><br>


title: DESCRIPTION
content:
The <b>aws s3 ls</b> command, typically aliased or wrapped as <i>aws-s3-ls</i>, is a core utility of the AWS Command Line Interface (CLI). It enables users to view and inspect the contents of Amazon S3 storage directly from their terminal.<br>This command can list all S3 buckets associated with your AWS account or list objects within a specified bucket or prefix (folder). It provides essential details such as the object's size, last modification date, and name.<br>It is an indispensable tool for managing and navigating S3 resources programmatically or via scripting, offering a quick and efficient way to inspect storage contents without needing the AWS Management Console.


title: CAVEATS
content:
The command <i>aws-s3-ls</i> is <b>not a standard Linux command</b> distributed with core Linux utilities. It is almost certainly a user-defined shell alias, a shell function, or a custom script that acts as a convenient wrapper for the official <i>aws s3 ls</i> command provided by the AWS Command Line Interface (CLI). Therefore, its exact functionality or available options might vary depending on how it's defined on your specific system.<br><br>To use this command, the <b>AWS CLI must be installed</b> and configured with valid AWS credentials that have sufficient permissions (e.g., <i>s3:ListBucket</i>, <i>s3:GetObject</i>) for the target S3 resources you intend to list.


title: INSTALLATION AND CONFIGURATION
content:
To utilize <i>aws-s3-ls</i> (as a wrapper for <i>aws s3 ls</i>), you must first install the AWS CLI. Official installation instructions are available on the AWS documentation website. After installation, configure your AWS credentials and default region using the <I>aws configure</I> command to enable authentication with your AWS account.


title: PERMISSIONS REQUIRED
content:
Accessing Amazon S3 resources necessitates appropriate AWS Identity and Access Management (IAM) permissions. For listing operations, your AWS credentials typically require the <I>s3:ListBucket</I> permission for the bucket itself and, if you're listing objects within a bucket, <I>s3:GetObject</I> permissions for the objects.


title: HISTORY
content:
The AWS Command Line Interface (CLI) was initially released in 2013, offering a unified tool to manage AWS services from the command line. The <i>aws s3 ls</i> command has been a foundational component of the <b>aws s3</b> family of commands since its early versions, providing direct and scriptable access to Amazon S3's listing capabilities. Its development has continuously incorporated new S3 features and performance enhancements, reflecting the evolution of Amazon S3 as a cloud storage service.


title: SYNOPSIS
content:
<b>aws s3 mb</b> <I>s3://bucket-name</I> [<I>--region</I> <I>value</I>] [<I>--endpoint-url</I> <I>value</I>] [<I>options</I>]


title: PARAMETERS
content:
<b><I>s3://bucket-name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The Amazon S3 URI specifying the name of the bucket to create. This name must be globally unique and adhere to S3 naming conventions.<br><br><b>--region <I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region where the S3 bucket should be created (e.g., <I>us-east-1</I>). If not specified, the default region configured for the <I>AWS CLI</I> is used.<br><br><b>--endpoint-url <I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overrides the default S3 service endpoint for the specified region. Useful for connecting to S3-compatible services or private endpoints.<br><br><b>--no-verify-ssl</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables SSL certificate verification. Use with caution, as it can expose you to security risks when connecting to non-trusted endpoints.<br><br>


title: DESCRIPTION
content:
The <b>aws s3 mb</b> command is a core utility within the <I>AWS Command Line Interface (CLI)</I> for provisioning new storage buckets in <I>Amazon S3</I>. It allows users to programmatically create an S3 bucket with a specified name in a particular <I>AWS Region</I>. Each S3 bucket name must be globally unique across all AWS accounts, and it must adhere to specific <I>DNS-compliant naming conventions</I> (e.g., all lowercase, no underscores, between 3 and 63 characters long).<br><br>While the request specifically mentioned <I>aws-s3-mb</I>, the standard and widely adopted command for this operation in the <I>AWS CLI</I> is <I>aws s3 mb</I>. It is highly probable that <I>aws-s3-mb</I> refers to a custom script or an alias wrapping the official <I>aws s3 mb</I> command. This analysis focuses on the standard <I>aws s3 mb</I> behavior.<br><br>Successful execution of this command requires the <I>AWS CLI</I> to be installed and configured with appropriate <I>IAM credentials</I> that possess the <I>s3:CreateBucket</I> permission.


title: CAVEATS
content:
Bucket names must be <I>globally unique</I> across all AWS accounts. If the chosen name is already taken, the command will fail.<br>Bucket naming conventions are strict; refer to AWS documentation for full details.<br>Creating a bucket incurs <I>storage costs</I> once objects are stored. Ensure you understand S3 pricing.<br>Permissions are crucial: the IAM user or role executing this command must have the <I>s3:CreateBucket</I> permission.<br>While the bucket is created, its <I>security settings</I> (e.g., public access blocks, default encryption) should be reviewed and configured post-creation to align with security best practices.


title: BUCKET NAMING CONVENTIONS
content:
S3 bucket names must be globally unique and follow strict DNS-compliant rules:<br> - Must be between 3 and 63 characters long.<br> - Can consist only of lowercase letters, numbers, and hyphens (<b>-</b>).<br> - Must begin and end with a letter or number.<br> - Cannot contain underscores, periods (.), or be formatted as an IP address.<br> - Cannot start with <I>xn--</I>.


title: IAM PERMISSIONS
content:
To successfully create an S3 bucket, the AWS credentials used by the <I>AWS CLI</I> must have the <I>s3:CreateBucket</I> permission granted by an <I>IAM policy</I> attached to the executing user or role.


title: REGION SPECIFICITY
content:
While S3 is a global service from a namespace perspective, buckets are created in specific <I>AWS Regions</I>. Data stored in a bucket never leaves its region unless explicitly transferred. Choosing the right region is important for latency, compliance, and cost optimization, as well as for data residency requirements.


title: HISTORY
content:
The <I>AWS Command Line Interface (CLI)</I>, of which <I>aws s3 mb</I> is a part, was first publicly released in <I>2013</I>. It was developed by Amazon Web Services to provide a unified, consistent, and powerful tool for interacting with various AWS services from the command line. Prior to the <I>AWS CLI</I>, users often relied on individual service-specific tools or SDKs. The `s3` subcommand group, including `mb` for 'make bucket', `rb` for 'remove bucket', `cp` for 'copy', and `ls` for 'list', has been a fundamental part of the <I>S3</I> functionality within the <I>CLI</I> since its early versions, evolving alongside the <I>S3</I> service itself.


title: SYNOPSIS
content:
<I><b>aws s3 mv</b></I> &lt;source&gt; &lt;target&gt; [<I>options</I>]<br><br><b>Examples:</b><br><I>aws s3 mv localfile.txt s3://mybucket/remote/path/</I><br><I>aws s3 mv s3://mybucket/oldkey s3://mybucket/newkey</I><br><I>aws s3 mv s3://mybucket/prefix/ s3://anotherbucket/newprefix/ --recursive</I>


title: PARAMETERS
content:
<b><I>source</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the source object or directory. Can be a local filesystem path or an S3 URI (e.g., <I>s3://bucket/key</I>).<br><br><b><I>target</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the destination object or directory. Can be a local filesystem path or an S3 URI (e.g., <I>s3://bucket/key</I>).<br><br><b>--recursive</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Recursively moves files/objects under the specified source path. Required for directory-like operations.<br><br><b>--exclude <I>pattern</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Don't include files matching the given pattern during a recursive operation.<br><br><b>--include <I>pattern</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Only include files matching the given pattern during a recursive operation. Takes precedence over <I>--exclude</I>.<br><br><b>--dryrun</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the operations that would be performed without actually executing them.<br><br><b>--grants <I>permissions</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets ACLs for the destination object. Format: <I>Permission=<I>GranteeType</I>=<I>Grantee</I>[<I>,GranteeType</I>=<I>Grantee</I>]...</I><br><br><b>--acl <I>acl_type</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies a canned ACL for the destination object (e.g., <I>private</I>, <I>public-read</I>, <I>bucket-owner-full-control</I>).<br><br><b>--storage-class <I>class</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the storage class for the destination object (e.g., <I>STANDARD</I>, <I>REDUCED_REDUNDANCY</I>, <I>GLACIER</I>, <I>DEEP_ARCHIVE</I>).<br><br><b>--sse</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables server-side encryption with S3-managed keys.<br><br><b>--sse-kms-key-id <I>key_id</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables server-side encryption with AWS KMS-managed keys, specifying the KMS key ID.<br><br><b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When moving from S3 to local, overwrite existing local files without prompting.<br><br>


title: DESCRIPTION
content:
The <b><I>aws s3 mv</I></b> command, part of the AWS Command Line Interface (CLI), facilitates the movement of objects within Amazon S3 or between Amazon S3 and the local filesystem. Conceptually, it performs a copy operation from the source to the destination, followed by the deletion of the original source object. This utility is powerful for reorganizing data within your S3 environment, migrating files to/from S3, or renaming objects.<br><br>When moving objects between S3 locations, the command typically handles large files efficiently using multipart uploads. It supports recursive operations for moving entire directories (S3 prefixes) and offers various options for fine-grained control over the move process, including specifying access control lists (ACLs), storage classes, and server-side encryption settings. It's an indispensable tool for managing your cloud storage resources.


title: CAVEATS
content:
The <b><I>aws s3 mv</I></b> command performs a copy and then a delete. This means that if the delete operation fails for any reason (e.g., permissions, eventual consistency issues), the source object might still exist, leading to duplicates. It's crucial to verify the operation's success. Cross-region moves are generally supported but might incur higher data transfer costs. For large-scale data migrations or complex synchronization needs, consider using AWS DataSync or other specialized services.


title: PERMISSIONS
content:
The AWS credentials configured for your CLI must have appropriate IAM permissions for both source (read and delete) and destination (write) S3 buckets and objects. Lack of permissions can cause the command to fail.


title: COST IMPLICATIONS
content:
Moving objects between S3 buckets, especially across regions, can incur data transfer costs. Be mindful of these costs, particularly for large datasets.


title: HISTORY
content:
The <b><I>aws s3 mv</I></b> command is an integral part of the AWS Command Line Interface (CLI), which was first released in 2013, providing a unified tool to manage AWS services from the command line. The S3 subcommands, including <I>mv</I>, have been fundamental since early versions, offering essential capabilities for interacting with Amazon S3. Its development has focused on improving performance, especially for large file transfers (multipart uploads), and incorporating new S3 features like various storage classes and encryption options, making it a robust and widely used utility for S3 management.


title: PARAMETERS
content:
<b>S3URI</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Required</i>. The S3 URI of the object for which to generate a pre-signed URL. Example: <br> <b>s3://my-bucket-name/my-object-key.txt</b><br><br><b>--expires-in <integer></b><br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Optional</i>. The number of seconds the pre-signed URL will remain valid. <br> The default is <b>3600</b> seconds (1 hour). The maximum allowed value is <b>604800</b> seconds (7 days).<br><br>


title: DESCRIPTION
content:
The <b>aws s3 presign</b> command, part of the AWS Command Line Interface (CLI), is a powerful utility for generating time-limited, authenticated URLs for Amazon S3 objects. This allows users or applications to temporarily access private S3 content without requiring their own AWS credentials. When you create a pre-signed URL, your AWS credentials are used to sign the URL, embedding security information and an expiration time. Anyone with this URL can then perform the action (typically downloading an object) that the URL's creator was authorized to do, for the duration specified. It's an essential tool for controlled sharing, enabling secure, temporary access to specific S3 resources for external parties or temporary integrations without exposing long-term credentials or modifying bucket policies. The command simplifies the process of granting transient access, making it invaluable for scenarios like sharing a private file with a client for a limited period or enabling a web application to fetch a specific asset.


title: CAVEATS
content:
<b>Security Risk:</b> The pre-signed URL grants full access to the S3 object (read, write, or delete, depending on the permissions of the identity used to generate the URL) for its entire duration. <br> Share these URLs with extreme caution, as anyone possessing the URL can use it.<br><br><b>Expiration:</b> Once the specified expiration time passes, the URL becomes invalid and can no longer be used to access the object.<br><br><b>Permissions:</b> The AWS credentials used to generate the pre-signed URL must have the necessary permissions for the S3 object (e.g., <b>s3:GetObject</b> for downloads). If the generating credentials lack permissions, the URL will not work.<br><br><b>Method Limitation:</b> The <b>aws s3 presign</b> CLI command exclusively generates pre-signed URLs for HTTP <b>GET</b> requests (downloads). <br> To generate pre-signed URLs for other HTTP methods (e.g., <b>PUT</b> for uploads, <b>DELETE</b>), an AWS SDK (like Boto3 for Python, or the SDK for Java, Node.js, etc.) must be used to specify the desired HTTP method programmatically.


title: USAGE EXAMPLES
content:
Here are common examples of using the <b>aws s3 presign</b> command:<br><br><i>1. Generate a URL for a file with default expiration (1 hour):</i><br><b>aws s3 presign s3://my-data-bucket/reports/report_2023.pdf</b><br><br><i>2. Generate a URL for an image file, valid for 10 minutes (600 seconds):</i><br><b>aws s3 presign s3://my-website-assets/images/logo.png --expires-in 600</b><br><br><i>3. Use the generated URL with <b>curl</b> to download the object:</i><br><b>curl "$(aws s3 presign s3://my-data-bucket/reports/report_2023.pdf)" -o downloaded_report.pdf</b>


title: HISTORY
content:
The <b>aws s3 presign</b> command is an integral part of the AWS Command Line Interface (CLI), which was first released in 2013, aiming to provide a unified tool for interacting with AWS services from the command line. <br> The functionality to generate pre-signed URLs has been a core feature for Amazon S3 since its early days, addressing the need for secure, time-limited access to private objects without altering bucket policies or requiring long-term credentials. <br> The CLI's <b>s3 presign</b> command brought this capability directly to the command line, simplifying its usage for developers and administrators.


title: SYNOPSIS
content:
<B>aws-s3-rb</B> <I>&lt;command&gt;</I> [<I>&lt;options&gt;</I>] [<I>&lt;arguments&gt;</I>]<br><br>Examples:<br><i><code>aws-s3-rb list &lt;bucket-name&gt; [--prefix &lt;prefix&gt;]</code></i><br><i><code>aws-s3-rb put &lt;bucket-name&gt; &lt;local-file&gt; [&lt;s3-key&gt;] [--acl &lt;permission&gt;]</code></i><br><i><code>aws-s3-rb get &lt;bucket-name&gt; &lt;s3-key&gt; [&lt;local-file&gt;]</code></i><br><i><code>aws-s3-rb delete &lt;bucket-name&gt; &lt;s3-key&gt;</code></i>


title: PARAMETERS
content:
<b><I>&lt;command&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The specific operation to perform (e.g., <i><code>list</code></i>, <i><code>put</code></i>, <i><code>get</code></i>, <i><code>delete</code></i>).<br><br><b><I>&lt;bucket-name&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the S3 bucket to interact with.<br><br><b><I>&lt;local-file&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The path to the local file for upload or download operations.<br><br><b><I>&lt;s3-key&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The key (path) of the object in the S3 bucket.<br><br><b>--prefix <I>&lt;prefix&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Filters listed objects to those beginning with the specified prefix.<br><br><b>--acl <I>&lt;permission&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the Access Control List for an uploaded object (e.g., <i><code>public-read</code></i>, <i><code>private</code></i>).<br><br><b>--region <I>&lt;region&gt;</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region where the bucket resides (e.g., <i><code>us-east-1</code></i>).<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases the verbosity of the command's output.<br><br><b>--force</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces an operation, often bypassing confirmation prompts for destructive actions.<br><br>


title: DESCRIPTION
content:
<code>aws-s3-rb</code> (likely a Ruby script or wrapper around the <i><code>aws-s3</code></i> Ruby gem) is a command-line interface designed for interacting with Amazon S3 (Simple Storage Service). Unlike the modern AWS CLI, this tool predates or exists as an alternative to it, typically leveraging the <i><code>aws-s3</code></i> gem, a Ruby library for S3 communication.<br><br>It enables users to perform fundamental S3 operations directly from the terminal, such as listing buckets, managing objects (uploading, downloading, deleting), and handling basic bucket configurations. Its primary utility lies in scripting and automating S3 interactions in environments where Ruby is preferred or pre-installed. Given its nature as a custom script or an older tool, its exact functionality and command-line arguments might vary based on its specific implementation or the version of the <i><code>aws-s3</code></i> gem it utilizes. It's generally considered a legacy tool, with modern S3 interactions often handled by the official AWS CLI.


title: CAVEATS
content:
<ul><li><b>Non-Standard Command</b>: <i><code>aws-s3-rb</code></i> is not a standard Linux utility and is likely a custom script or an older tool based on the <i><code>aws-s3</code></i> Ruby gem. Its availability and exact behavior depend on its specific installation and implementation.</li><br><li><b>Legacy Tool</b>: It's largely considered a legacy tool. Modern AWS S3 interactions are typically handled by the official <i><B>AWS CLI (<code>aws s3</code>)</B></i>, which is more robust, actively maintained, and feature-rich.</li><br><li><b>Authentication</b>: May rely on environment variables (<i><code>AWS_ACCESS_KEY_ID</code></i>, <i><code>AWS_SECRET_ACCESS_KEY</code></i>) or direct command-line arguments for authentication, which is generally less secure than IAM roles or AWS CLI profiles.</li><br><li><b>Limited Features</b>: May lack advanced features found in the official AWS CLI, such as multipart uploads for large files, S3 Transfer Acceleration, S3 events, or complex IAM policy management.</li><br><li><b>Maintenance</b>: The underlying <i><code>aws-s3</code></i> Ruby gem is likely not actively maintained, potentially leading to compatibility issues with newer AWS S3 features or API changes.</li></ul>


title: INSTALLATION
content:
The command itself is not typically installed via standard package managers. It would usually be made available by installing the <i><code>aws-s3</code></i> Ruby gem (<i><code>gem install aws-s3</code></i>) and potentially creating a symbolic link or wrapper script to the gem's executable (often <i><code>aws-s3</code></i>) under the name <i><code>aws-s3-rb</code></i>.


title: USAGE CONTEXT
content:
Primarily useful in legacy systems, specific Ruby-centric automation scripts, or environments where the official AWS CLI cannot be installed or is considered overkill for simple S3 tasks.


title: HISTORY
content:
The command <i><code>aws-s3-rb</code></i>, if it exists as a standalone executable, likely emerged as a simplified wrapper or direct execution point for functionalities provided by the <i><code>aws-s3</code></i> Ruby gem. This gem was a popular choice for interacting with Amazon S3 in Ruby applications and scripts during the earlier days of AWS, prior to the widespread adoption and development of the official AWS SDKs and CLI in multiple languages. It provided a programmatic and command-line interface for S3 operations, appealing to developers and system administrators working within a Ruby ecosystem. Its usage has largely been superseded by the more comprehensive and officially supported <i><B>AWS SDK for Ruby</B></i> and the general-purpose <i><B>AWS CLI</B></i>.


title: SYNOPSIS
content:
<b>aws-s3-rm</b> <I>S3URI</I> [<I>--recursive</I>] [<I>--dryrun</I>] [<I>--force</I>] [<I>--include</I> <I>pattern</I>] [<I>--exclude</I> <I>pattern</I>] [<I>--region</I> <I>region-name</I>] [<I>--profile</I> <I>profile-name</I>]


title: PARAMETERS
content:
<b><I>S3URI</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The S3 path to the object(s) or prefix (folder) to delete. Format: <I>s3://bucket-name/key-path</I>.<br><br><b><I>--recursive</I>, <I>-r</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Recursively deletes objects under the specified prefix. Essential for deleting entire folders.<br><br><b><I>--dryrun</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a simulated run of the command, displaying what would be deleted without actually making any changes.<br><br><b><I>--force</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses confirmation prompts for recursive deletions, useful for scripting or automation.<br><br><b><I>--include</I> <I>pattern</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with <I>--recursive</I>, specifies a pattern to include files. Only files matching this pattern will be deleted. Can be specified multiple times.<br><br><b><I>--exclude</I> <I>pattern</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;When used with <I>--recursive</I>, specifies a pattern to exclude files. Files matching this pattern will not be deleted. Has precedence over <I>--include</I>. Can be specified multiple times.<br><br><b><I>--region</I> <I>region-name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region to send the request to (e.g., <I>us-east-1</I>). Overrides environment variables or configuration files.<br><br><b><I>--profile</I> <I>profile-name</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS CLI profile to use from your credential file (e.g., <I>default</I> or a custom profile).<br><br>


title: DESCRIPTION
content:
The <b>aws-s3-rm</b> command, typically an alias or wrapper for the <I>aws s3 rm</I> subcommand of the AWS Command Line Interface (CLI), provides a straightforward way to remove objects and prefixes (folders) from Amazon S3 buckets. It's a fundamental tool for managing S3 storage directly from your terminal. When used without the <I>--recursive</I> option, it deletes a single specified object. With <I>--recursive</I>, it efficiently removes all objects within a given S3 prefix, effectively deleting a folder and its contents. This command is designed for simple, idempotent deletions, meaning that attempting to delete an object that does not exist will not result in an error. It's crucial to exercise caution as deletions are generally irreversible, especially without bucket versioning enabled. The command handles various scenarios, including specifying file paths and directory structures, and offers options for dry runs and confirmation bypass for automated scripts.


title: CAVEATS
content:
<b><I>Irreversibility:</I></b> Deletions are typically permanent and cannot be undone, especially if bucket versioning is not enabled.<br><br><b><I>Permissions:</I></b> The AWS credentials used must have appropriate IAM permissions (<I>s3:DeleteObject</I> and <I>s3:DeleteObjectVersion</I>) for the specified S3 bucket and objects.<br><br><b><I>Versioning Behavior:</I></b> If bucket versioning is enabled, <I>aws s3 rm</I> (and thus <I>aws-s3-rm</I>) does not truly delete object versions; instead, it creates a <I>delete marker</I> for the object's current version, effectively hiding previous versions. To permanently delete specific object versions, the <I>aws s3api delete-object --version-id</I> command is required.<br><br><b><I>Cost Implications:</I></b> Deletion requests count towards your S3 billing, and associated storage costs for deleted objects cease once they are removed.


title: PERMISSIONS REQUIRED
content:
To successfully use <I>aws-s3-rm</I>, the IAM user or role configured for your AWS CLI must have the <I>s3:DeleteObject</I> permission for the target S3 bucket and its objects. If you are dealing with versioned buckets, the <I>s3:DeleteObjectVersion</I> permission is also necessary to truly delete specific versions (though <I>aws s3 rm</I> primarily creates delete markers, explicit version deletion requires <I>s3api</I>).


title: DEALING WITH VERSIONED BUCKETS
content:
When a bucket has versioning enabled, using <I>aws-s3-rm</I> (or <I>aws s3 rm</I>) on an object does not permanently remove its previous versions. Instead, it adds a <I>delete marker</I> as the current version. This marker makes the object appear deleted in typical <I>ls</I> operations, but all prior versions still exist and incur storage costs. To truly delete a specific version, you must use the <I>aws s3api delete-object --version-id</I> command, specifying the exact version ID you wish to remove permanently.


title: HISTORY
content:
The <I>aws-s3-rm</I> command, while not a standalone binary in core Linux distributions, is a common alias or shell script wrapper around the <I>aws s3 rm</I> subcommand of the <B>AWS Command Line Interface (CLI)</B>. The AWS CLI itself was first released in 2013, providing a unified tool to manage AWS services from the command line. The <I>s3</I> family of commands, including <I>rm</I>, was among the earliest and most frequently used functionalities, reflecting the foundational role of Amazon S3 for cloud storage. Its development has focused on simplifying common S3 operations, offering powerful options like recursive deletion and filtering, making it an indispensable tool for developers and administrators managing cloud resources.


title: SYNOPSIS
content:
<b>aws-s3-website</b> <i><command></i> [<i>options</i>]<br><b>aws-s3-website</b> <i><command></i> --config <i><file></i> [<i>options</i>]


title: PARAMETERS
content:
<b><i><command></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the action to perform. Common commands include <b>deploy</b> (<i>uploads files and configures bucket</i>), <b>configure</b> (<i>generates a configuration file</i>), <b>setup-bucket</b> (<i>configures S3 bucket for hosting</i>), <b>upload</b> (<i>only uploads files</i>), <b>invalidate</b> (<i>invalidates CloudFront cache</i>), <b>setup-cloudfront</b> (<i>creates/updates CloudFront distribution</i>).<br><br><b>--config <i><file></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the path to a JSON configuration file (e.g., <i>s3website.json</i>) that defines bucket settings, paths, and other deployment parameters. This is often the primary way to manage project-specific settings.<br><br><b>--bucket <i><name></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the S3 bucket where the website will be hosted. Required if not specified in the configuration file.<br><br><b>--region <i><name></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The AWS region where the S3 bucket is located (e.g., <i>us-east-1</i>). Required if not specified in the configuration file.<br><br><b>--index-document <i><name></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The default index document for the website (e.g., <i>index.html</i>).<br><br><b>--error-document <i><name></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The default error document for the website (e.g., <i>404.html</i>).<br><br><b>--delete</b><br>&nbsp;&nbsp;&nbsp;&nbsp;When deploying, deletes files from the S3 bucket that are not present in the local source directory. Use with caution.<br><br><b>--dryrun</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Performs a simulated run, showing what actions would be taken without actually making any changes to the S3 bucket or CloudFront.<br><br><b>--profile <i><name></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a specific AWS credential profile configured in your <i>~/.aws/credentials</i> file.<br><br><b>--no-invalidate</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Prevents the command from invalidating the CloudFront cache after deployment, which can save costs but may result in stale content being served.<br><br><b>--gzip</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables Gzip compression for text-based files (e.g., <i>.html, .css, .js</i>) before uploading them to S3, improving load times.<br><br><b>--confirm</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Bypasses confirmation prompts for actions like deletion or major changes.<br><br>


title: DESCRIPTION
content:
The <b>aws-s3-website</b> command-line tool, typically a Python-based utility, streamlines the often complex process of deploying static websites to Amazon S3. It automates numerous steps that would otherwise require manual configuration in the AWS console or intricate scripting with the AWS CLI. Its core functionality includes configuring an S3 bucket for website hosting, setting up appropriate bucket policies (e.g., public read access), defining CORS rules, handling index and error documents (like <i>index.html</i> and <i>404.html</i>), and managing content uploads.<br><br>Beyond basic deployment, it can also integrate with AWS CloudFront to serve content via a CDN, offering features like cache invalidation and Gzip compression for optimized delivery. The tool aims to provide a quick and efficient way for developers to host their static sites, single-page applications, or documentation sites directly from an S3 bucket, abstracting away much of the underlying AWS infrastructure complexity.


title: CAVEATS
content:
The <b>aws-s3-website</b> command is not a standard Linux command; it is a third-party Python utility. Therefore, it requires Python and <b>pip</b> to be installed on your system. Additionally, proper AWS credentials (<i>via AWS CLI configuration or environment variables</i>) must be set up and possess sufficient IAM permissions to manage S3 buckets and, if applicable, CloudFront distributions. This tool is primarily designed for static website hosting and does not support server-side logic or dynamic content generation.


title: INSTALLATION
content:
Since <b>aws-s3-website</b> is a Python package, it can be installed using <b>pip</b>:<br><i>pip install aws-s3-website</i>


title: CONFIGURATION FILE
content:
The tool often relies on a <i>s3website.json</i> or <i>.s3website</i> file in your project root. This file contains all necessary parameters for deployment, such as the bucket name, region, source directory, index/error documents, and CloudFront settings, allowing for repeatable deployments.


title: HISTORY
content:
The <b>aws-s3-website</b> tool emerged from the need to simplify the often verbose and multi-step process of hosting static content on Amazon S3 using the AWS CLI. Developed as an open-source Python project, its goal was to provide a more declarative and streamlined approach, abstracting away the intricacies of S3 bucket policies, CORS, and CloudFront integration. It gained popularity among developers looking for a quick and reliable way to deploy static websites and single-page applications without deep AWS console navigation or complex scripting.


title: SEE ALSO
content:
aws(1) - AWS Command Line Interface (particularly <b>aws s3</b> subcommands), s3cmd - Command-line tool for managing S3 and CloudFront, rclone(1) - Rsync for cloud storage, including S3, firebase deploy - For deploying web apps to Firebase Hosting (similar concept for static sites)


title: SYNOPSIS
content:
<b>aws s3api</b> <i>&lt;operation&gt;</i> [<i>&lt;parameters&gt;</i>]<br><br><i><b>Examples:</b></i><br><i>  aws s3api create-bucket --bucket my-unique-bucket-name --create-bucket-configuration LocationConstraint=us-west-2</i><br><i>  aws s3api get-object --bucket my-bucket --key my-file.txt my-local-file.txt</i><br><i>  aws s3api put-object --bucket my-bucket --key new-file.txt --body ./local-file-to-upload.txt</i><br><i>  aws s3api list-buckets</i>


title: PARAMETERS
content:
<b><i>&lt;operation&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;This is a required subcommand that specifies the exact Amazon S3 API operation to execute (e.g., <i>create-bucket</i>, <i>list-buckets</i>, <i>get-object</i>, <i>put-object</i>, <i>delete-object</i>, <i>get-bucket-policy</i>). Each operation has its own specific set of required and optional parameters.<br><br><b><i>--&lt;parameter-name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;General syntax for arguments specific to the chosen S3 API operation. These parameters directly correspond to the S3 API request elements. Common examples include <i><b>--bucket</b></i> (specifies the bucket name), <i><b>--key</b></i> (specifies the object key), <i><b>--body</b></i> (specifies the path to a file for upload), <i><b>--create-bucket-configuration</b></i> (often expects JSON for bucket creation details), <i><b>--policy</b></i> (expects JSON for bucket policies). Many complex parameters require a path to a JSON file (e.g., <i><b>--policy file://policy.json</b></i>).<br><br><b><b>--endpoint-url</b> <i>&lt;url&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional. Specifies a custom endpoint URL for the S3 service. Useful for testing or when using S3-compatible storage solutions.<br><br><b><b>--region</b> <i>&lt;region&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional. Specifies the AWS region to send the request to (e.g., <i>us-east-1</i>, <i>eu-west-2</i>). Overrides the default region configured in the AWS CLI profile.<br><br><b><b>--output</b> <i>&lt;format&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional. Specifies the output format of the command. Common formats include <i>json</i> (default), <i>text</i>, or <i>table</i>.<br><br><b><b>--query</b> <i>&lt;jmespath-expression&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Optional. Uses a JMESPath expression to filter and format the command output, allowing users to extract specific data from the JSON response.<br><br>


title: DESCRIPTION
content:
<i><b>aws s3api</b></i> is a subcommand of the AWS Command Line Interface (CLI) that provides direct, low-level access to Amazon S3 service operations. Unlike the high-level <i><b>aws s3</b></i> commands (e.g., <i>cp</i>, <i>sync</i>, <i>ls</i>) which simplify common file operations, <i><b>s3api</b></i> directly maps to the S3 REST API operations. This allows for fine-grained control over S3 resources, enabling users to perform actions such as creating buckets with specific region constraints, configuring detailed bucket policies, managing lifecycle rules, or interacting with object versioning at a programmatic level. It is particularly useful for advanced scripting, automation, and when specific S3 features not exposed by the simpler high-level commands are required. Users typically need to have precise knowledge of the S3 API parameters, often supplying input in JSON format and receiving output in JSON.


title: CAVEATS
content:
<i><b>aws s3api</b></i> commands are low-level and can be significantly more complex and verbose than their high-level <i><b>aws s3</b></i> counterparts. They require a detailed understanding of the underlying S3 API operations and their specific parameters. Incorrect syntax or parameter values can lead to cryptic errors. For simple file transfers and basic bucket listings, the high-level <i><b>aws s3</b></i> commands are generally preferred due to their simplicity. All <i><b>s3api</b></i> operations return JSON output by default, which may require further parsing for scripting purposes.


title: HIGH-LEVEL VS. LOW-LEVEL S3 COMMANDS
content:
The AWS CLI offers two primary interfaces for interacting with S3: <i><b>aws s3</b></i> and <i><b>aws s3api</b></i>. <i><b>aws s3</b></i> commands (e.g., <i>cp</i>, <i>sync</i>, <i>ls</i>, <i>rm</i>) are designed for ease of use, abstracting away API complexity to simplify common file and bucket management tasks. They are ideal for everyday operations. Conversely, <i><b>aws s3api</b></i> commands provide a direct, one-to-one mapping to the Amazon S3 REST API. This low-level access is crucial for advanced scenarios where specific S3 features like detailed access control lists (ACLs), bucket policies, lifecycle rules, versioning configurations, or multi-part uploads with specific control are needed. While more complex to use, <i><b>s3api</b></i> is indispensable for robust scripting and automation of intricate S3 workflows.


title: HISTORY
content:
The AWS Command Line Interface (CLI) was initially released in 2013 to provide a unified tool for managing AWS services. From its early versions, the <i><b>s3api</b></i> subcommand was integral, offering direct access to Amazon S3's REST API. This design choice allowed for both simplified, common S3 operations (via <i><b>aws s3</b></i>) and granular control over every S3 feature (via <i><b>aws s3api</b></i>), ensuring the CLI could cater to a wide range of use cases from basic file management to complex automation tasks requiring precise API interactions.


title: SEE ALSO
content:
aws(1), aws s3(1) (refers to the high-level AWS CLI S3 commands), jq(1) (for parsing JSON output from aws s3api)


title: SYNOPSIS
content:
<b>aws secretsmanager</b> <I>subcommand</I> [<I>options</I>]<br><br><i>Examples of common subcommands:</i><br><b>aws secretsmanager create-secret</b> [--name <I>value</I>] [--secret-string <I>value</I>]<br><b>aws secretsmanager get-secret-value</b> [--secret-id <I>value</I>]<br><b>aws secretsmanager list-secrets</b><br><b>aws secretsmanager rotate-secret</b> [--secret-id <I>value</I>]<br><b>aws secretsmanager delete-secret</b> [--secret-id <I>value</I>]


title: PARAMETERS
content:
<b><b>--region</b> <I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the <I>AWS</I> region to send the request to (e.g., <I>us-east-1</I>). Overrides the default region configured for the profile.<br><br><b><b>--output</b> <I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format: <I>json</I>, <I>text</I>, or <I>table</I>. Defaults to <I>json</I>.<br><br><b><b>--profile</b> <I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the named profile to use for the command. Useful when managing multiple <I>AWS</I> accounts or roles.<br><br><b><b>--secret-id</b> <I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A common parameter used by many <I>secretsmanager</I> subcommands. It specifies the <I>ARN</I> or the name of the secret to operate on.<br><br><b><b>--secret-string</b> <I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used by <I>create-secret</I> and <I>update-secret</I>. The text of the secret. Can be plain text or a <I>JSON</I> string. If it's a <I>JSON</I> string, it must be valid <I>JSON</I>.<br><br><b><b>--name</b> <I>value</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used by <I>create-secret</I> to specify a friendly name for the new secret.<br><br><b><i>Subcommand Specific Parameters</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Each <I>secretsmanager</I> subcommand (e.g., <I>get-secret-value</I>, <I>create-secret</I>, <I>update-secret</I>) has its own set of specific parameters required for its operation. These are detailed in the <I>AWS CLI</I> documentation for each subcommand.<br><br>


title: DESCRIPTION
content:
The <b>aws secretsmanager</b> command, part of the <I>AWS Command Line Interface (CLI)</I>, provides a powerful interface for interacting with the <I>AWS Secrets Manager</I> service directly from your terminal.<br><br>AWS Secrets Manager is a dedicated service designed to help you securely store, manage, and retrieve credentials, API keys, and other sensitive information throughout their lifecycle. It offers features like automatic rotation of secrets, fine-grained access control through <I>AWS Identity and Access Management (IAM)</I>, and integration with various <I>AWS</I> services.<br><br>Using the <I>aws secretsmanager</I> CLI subcommands, developers and administrators can programmatically perform operations such as creating new secrets, retrieving secret values, updating secret configurations, deleting secrets, configuring automatic rotation, and managing resource policies. This command-line access facilitates automation, scripting, and integration into CI/CD pipelines, enabling organizations to improve their security posture by minimizing hardcoded credentials and centralizing secret management.


title: CAVEATS
content:
1. <B>AWS CLI Installation and Configuration:</B> The <I>aws secretsmanager</I> command requires the <I>AWS Command Line Interface (CLI)</I> to be installed and properly configured with <I>AWS</I> credentials and a default region.<br>2. <B>IAM Permissions:</B> The <I>AWS</I> identity (user or role) executing the command must have the necessary <I>IAM</I> permissions to perform the requested <I>Secrets Manager</I> operations (e.g., <I>secretsmanager:GetSecretValue</I>, <I>secretsmanager:CreateSecret</I>). Lack of permissions will result in 'Access Denied' errors.<br>3. <B>Network Connectivity:</B> Requires outbound internet connectivity to <I>AWS</I> endpoints for the <I>Secrets Manager</I> service.<br>4. <B>JSON Handling:</B> Many <I>Secrets Manager</I> operations involve inputting or outputting <I>JSON</I> data. Familiarity with <I>JSON</I> parsing and construction (e.g., using <I>jq</I>) is often beneficial for scripting.


title: <B>EXAMPLE: RETRIEVING A SECRET VALUE</B>
content:
To retrieve the value of a secret named <I>my-application-db-creds</I>:<br><pre><code><b>aws secretsmanager get-secret-value --secret-id my-application-db-creds --query SecretString --output text</b></code></pre><br>This command fetches the secret, then uses a <I>JMESPath</I> query to extract only the <I>SecretString</I> field, and outputs it as plain text.


title: <B>EXAMPLE: CREATING A NEW SECRET</B>
content:
To create a new secret named <I>api-key-service-x</I> with a simple string value:<br><pre><code><b>aws secretsmanager create-secret --name api-key-service-x --secret-string '{"username":"admin","password":"supersecurepassword"}'</b></code></pre><br>Note the use of single quotes and escaped double quotes for the <I>JSON</I> secret string.


title: <B>IAM PERMISSIONS FOR SECRETS MANAGER</B>
content:
Access to <I>Secrets Manager</I> is controlled by <I>IAM</I> policies. Key actions include:<br><ul><li><I>secretsmanager:GetSecretValue</I>: Allows retrieving a secret's value.</li><li><I>secretsmanager:CreateSecret</I>: Allows creating new secrets.</li><li><I>secretsmanager:UpdateSecret</I>: Allows modifying existing secrets.</li><li><I>secretsmanager:DeleteSecret</I>: Allows deleting secrets.</li><li><I>secretsmanager:RotateSecret</I>: Allows initiating secret rotation.</li></ul>It's recommended to grant the least privilege necessary for any application or user interacting with <I>Secrets Manager</I>.


title: HISTORY
content:
The <I>AWS Secrets Manager</I> service was publicly launched by <I>Amazon Web Services (AWS)</I> in <I>April 2018</I>. Its introduction addressed the growing need for a centralized, secure, and automated solution for managing database credentials, API keys, and other sensitive information that applications and services rely on.<br><br>Shortly after the service's launch, corresponding support was integrated into the <I>AWS Command Line Interface (CLI)</I>, allowing users to interact with <I>Secrets Manager</I> programmatically and integrate secret management into their automation workflows. Since then, <I>AWS</I> has continually enhanced the service and its CLI capabilities, adding features such as improved rotation options, cross-account secret sharing, and integration with more <I>AWS</I> services, solidifying its role as a core component of <I>AWS</I> security best practices.


title: SEE ALSO
content:
<b>aws</b>(1) - The main <I>AWS Command Line Interface</I> entry point., <b>jq</b>(1) - A lightweight and flexible command-line <I>JSON</I> processor, often used to parse output from <I>AWS CLI</I> commands., <b>aws kms</b>(1) - <I>AWS Key Management Service</I>, often used in conjunction with <I>Secrets Manager</I> for encryption., <b>aws iam</b>(1) - <I>AWS Identity and Access Management</I>, for managing permissions related to <I>Secrets Manager</I> access.


title: PARAMETERS
content:
<b><b>&lt;command&gt;</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the SES operation to perform. Common examples include <i>send-email</i>, <i>verify-identity</i>, <i>list-identities</i>, etc.<br><br><b><b>--from</b> <i>&lt;email-address&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the sender's email address. Must be a verified SES identity.<br><br><b><b>--to</b> <i>&lt;email-addresses&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of recipient email addresses.<br><br><b><b>--cc</b> <i>&lt;email-addresses&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of CC recipient email addresses.<br><br><b><b>--bcc</b> <i>&lt;email-addresses&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of BCC recipient email addresses.<br><br><b><b>--subject</b> <i>&lt;text&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The subject line of the email.<br><br><b><b>--text-body</b> <i>&lt;file-or-string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The plain text content of the email. Can be a string or a path to a file.<br><br><b><b>--html-body</b> <i>&lt;file-or-string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The HTML content of the email. Can be a string or a path to a file.<br><br><b><b>--attachment</b> <i>&lt;file-paths&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Comma-separated list of file paths to attach to the email. (Hypothetical functionality for a wrapper).<br><br><b><b>--template</b> <i>&lt;template-name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a pre-defined SES email template.<br><br><b><b>--template-data</b> <i>&lt;json-string&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;JSON string containing data to populate the template variables.<br><br><b><b>--region</b> <i>&lt;aws-region&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The AWS region to send the email from (e.g., <i>us-east-1</i>).<br><br><b><b>--profile</b> <i>&lt;profile-name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The AWS credentials profile to use from <i>~/.aws/credentials</i>.<br><br><b><b>--configuration-set</b> <i>&lt;set-name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The name of the configuration set to use for sending emails, enabling metrics and event publishing.<br><br>


title: DESCRIPTION
content:
The <i>aws-ses</i> command is a hypothetical, simplified Linux command-line interface designed to streamline interactions with Amazon Simple Email Service (SES). While not a standard pre-installed Linux utility, it represents a common pattern where developers create wrapper scripts around the more verbose AWS CLI to perform specific tasks more efficiently. Its primary purpose would be to abstract the complexities of direct AWS CLI calls, making it easier to send emails, manage sender identities (email addresses and domains), and handle other SES-related operations directly from the command line or within shell scripts. This command would typically cover common use cases such as sending transactional emails, marketing campaigns, or system notifications, simplifying parameter input and output processing compared to the underlying AWS CLI `aws ses` subcommands. It would rely on an existing AWS CLI installation and configured credentials to authenticate with the AWS cloud.


title: CAVEATS
content:
This command, <i>aws-ses</i>, is presented as a hypothetical wrapper script designed for ease of use. It is not a standard Linux utility and would require custom implementation (e.g., in Bash, Python) that utilizes the underlying AWS CLI `aws ses` subcommands. Users must have the AWS CLI installed and configured with appropriate IAM permissions to interact with SES. <br><br> AWS SES has sending quotas and limits, and new accounts often start in a 'sandbox' environment with restrictions on recipients and sending volume. Sender identities (email addresses or domains) must be verified with SES before they can be used to send emails.


title: IDENTITY VERIFICATION
content:
Before sending emails via SES, you must verify the email addresses or domains you intend to send from. This process confirms you own them and helps prevent spam. This command, if implemented, would likely include a subcommand like <i>aws-ses verify-identity</i> for this purpose.


title: SANDBOX MODE
content:
Newly created AWS accounts (or new SES regions for existing accounts) typically start in SES 'sandbox' mode. In this mode, you can only send emails to verified identities. To send emails to any recipient, you must request production access through the AWS console.


title: USE CASES
content:
<i>aws-ses</i> would be ideally suited for:<br><ul><li>Sending transactional emails (e.g., order confirmations, password resets).</li><li>Automated notifications from server processes or scripts.</li><li>Simple marketing campaigns or newsletters.</li><li>Programmatic email sending from CI/CD pipelines.</li></ul>


title: HISTORY
content:
While <i>aws-ses</i> itself is not a standard Linux command, the concept of creating shell wrappers to simplify complex cloud CLI interactions is common. Amazon Simple Email Service (SES) was launched by AWS in 2011, providing a scalable and cost-effective email sending service. The official AWS CLI was released later, providing a programmatic interface to AWS services. Over time, developers often build custom scripts like this hypothetical <i>aws-ses</i> to encapsulate specific, frequently used SES operations, making them more accessible and user-friendly within development workflows and automated scripts, circumventing the verbosity of direct AWS CLI calls.


title: SYNOPSIS
content:
<b>aws sns</b> <I>subcommand</I> [<I>options</I>]<br>Examples:<br><b>aws sns publish</b> --topic-arn <I>string</I> --message <I>string</I><br><b>aws sns create-topic</b> --name <I>string</I><br><b>aws sns subscribe</b> --topic-arn <I>string</I> --protocol <I>string</I> --notification-endpoint <I>string</I>


title: PARAMETERS
content:
<b><b>--region</b> <I>string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region to send the request to. This is a global AWS CLI option.<br><br><b><b>--output</b> <I>string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The formatting style for command output (e.g., json, text, table). This is a global AWS CLI option.<br><br><b><b>--profile</b> <I>string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a specific profile from your credential file. This is a global AWS CLI option.<br><br><b><b>--topic-arn</b> <I>string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A common parameter for many SNS commands, specifying the Amazon Resource Name (ARN) of the SNS topic.<br><br><b><b>--message</b> <I>string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used specifically with the <b>publish</b> subcommand to specify the message body to send.<br><br><b><b>--name</b> <I>string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with subcommands like <b>create-topic</b> or <b>get-topic-attributes</b> to specify the name of the topic.<br><br><b><b>--protocol</b> <I>string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with the <b>subscribe</b> subcommand to define the delivery protocol (e.g., http, email, sms, sqs, lambda).<br><br><b><b>--notification-endpoint</b> <I>string</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with the <b>subscribe</b> subcommand to specify the endpoint that receives notifications.<br><br>


title: DESCRIPTION
content:
The term "aws-sns" does not refer to a standalone Linux command. Instead, it typically refers to the <I>AWS Command Line Interface</I> (AWS CLI) service namespace used to interact with <I>AWS Simple Notification Service</I> (SNS). The AWS CLI provides a unified tool to manage your AWS services from the command line. When you use <b>aws sns</b>, you are leveraging the AWS CLI to programmatically access and manage SNS resources. This includes publishing messages to topics, creating and managing SNS topics, subscribing endpoints (like email, SMS, SQS, Lambda) to topics, and configuring topic attributes like access policies. It's an essential tool for automating tasks, scripting, and integrating SNS with other systems without needing the AWS Management Console.


title: CAVEATS
content:
Using <b>aws sns</b> requires the <I>AWS CLI</I> to be installed and configured with valid AWS credentials and a default region. Users must possess the necessary <I>IAM permissions</I> to perform SNS operations (e.g., <I>sns:Publish</I>, <I>sns:Subscribe</I>, <I>sns:CreateTopic</I>), otherwise, <I>Access Denied</I> errors will occur. AWS SNS incurs costs based on the number of messages published, deliveries, and data transfer; users should be aware of pricing. Be mindful of <I>AWS service quotas</I> and rate limits to avoid throttling errors. Output from commands is typically in JSON format, requiring tools like <I>jq</I> for efficient parsing in scripts.


title: COMMON SNS OPERATIONS
content:
The <b>aws sns</b> command suite facilitates a wide range of operations, including: <br><b>publishing</b> messages to topics (e.g., <b>publish</b>), <br><b>managing subscriptions</b> (e.g., <b>subscribe</b>, <b>unsubscribe</b>, <b>list-subscriptions-by-topic</b>), <br><b>creating and deleting topics</b> (e.g., <b>create-topic</b>, <b>delete-topic</b>), and <br><b>configuring topic attributes</b> (e.g., <b>set-topic-attributes</b>, <b>get-topic-attributes</b>).


title: INTEGRATION WITH AWS SERVICES
content:
SNS often integrates with other AWS services. For instance, messages can be delivered to <I>AWS Lambda</I> functions, <I>Amazon SQS</I> queues, or directly to users via <I>SMS</I> and <I>email</I>, all configurable via <b>aws sns</b> commands. This makes it a central component in event-driven architectures.


title: HISTORY
content:
The <I>AWS Command Line Interface</I> (AWS CLI) was initially released in 2013, providing a consistent and unified tool for managing AWS services, including <I>Simple Notification Service</I> (SNS). While SNS launched in 2010, the <b>aws sns</b> interface has continuously evolved with new SNS features and improvements, reflecting the service's expanding capabilities and integration options. Its development focuses on enabling robust automation and programmatic control over notification workflows.


title: SYNOPSIS
content:
<b>aws sqs</b> <i>&lt;api-action&gt;</i> [<i>&lt;parameters&gt;</i>] [<i>&lt;global-options&gt;</i>]<br><br>Examples:<br><i>aws sqs create-queue --queue-name MyNewQueue</i><br><i>aws sqs send-message --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue --message-body "Hello SQS!"</i><br><i>aws sqs receive-message --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue --max-number-of-messages 1</i><br><i>aws sqs list-queues</i>


title: PARAMETERS
content:
<b><i>send-message</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sends a message to a specified SQS queue. Requires <i>--queue-url</i> and <i>--message-body</i>.<br><br><b><i>receive-message</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves messages from an SQS queue. Commonly used with <i>--queue-url</i> and <i>--max-number-of-messages</i>.<br><br><b><i>create-queue</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Creates a new SQS queue. Requires <i>--queue-name</i> and supports optional attributes like <i>--attributes</i>.<br><br><b><i>delete-queue</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Deletes a specified SQS queue. Requires <i>--queue-url</i>. Be cautious, as this operation is irreversible.<br><br><b><i>list-queues</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists existing SQS queues in the current region or optionally filtered by a prefix using <i>--queue-name-prefix</i>.<br><br><b><i>get-queue-url</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves the URL of an SQS queue given its name. Requires <i>--queue-name</i>.<br><br><b><i>get-queue-attributes</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves one or more attributes of a queue. Requires <i>--queue-url</i> and optional <i>--attribute-names</i>.<br><br><b><i>set-queue-attributes</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Sets the attributes of an existing queue. Requires <i>--queue-url</i> and <i>--attributes</i>.<br><br>


title: DESCRIPTION
content:
The "aws sqs" command is a core subcommand of the <b>AWS Command Line Interface (CLI)</b>, a unified tool to manage your Amazon Web Services. It allows users to interact directly with the <b>Amazon Simple Queue Service (SQS)</b> from their terminal. SQS is a fully managed message queuing service that enables you to decouple and scale microservices, distributed systems, and serverless applications.<br><br>Through various API actions, "aws sqs" provides comprehensive control over SQS queues, including creating and deleting queues, listing available queues, sending and receiving messages, changing queue attributes, and managing message visibility timeouts. It's an essential tool for developers and administrators to automate SQS operations, debug queue behavior, and integrate SQS functionalities into scripts or applications without needing to write code against the AWS SDKs.


title: CAVEATS
content:
The "aws sqs" command, as part of the AWS CLI, requires the <b>AWS CLI</b> to be installed and properly configured with valid AWS credentials (e.g., using <i>aws configure</i>) and a default region. Operations are subject to <b>IAM permissions</b> associated with the configured credentials. Network connectivity to AWS endpoints is mandatory. Some operations, like receiving messages, might return empty responses if no messages are available, or might be affected by <b>visibility timeouts</b> for messages already being processed.


title: <B>CONFIGURATION</B>
content:
Before using "aws sqs" commands, ensure your AWS CLI is configured using <i>aws configure</i>. This sets up your AWS Access Key ID, Secret Access Key, default region, and preferred output format (e.g., <i>json</i>, <i>text</i>, <i>table</i>).


title: <B>OUTPUT FORMATS</B>
content:
The AWS CLI supports various output formats. You can specify the output format for a command using the <i>--output</i> global option, for example, <i>--output json</i> for programmatic parsing, <i>--output text</i> for simple text output, or <i>--output table</i> for human-readable tabular data.


title: <B>GLOBAL OPTIONS</B>
content:
Beyond API-specific parameters, "aws sqs" commands can use global AWS CLI options such as <i>--region</i> (to override the default region), <i>--profile</i> (to use a specific named profile from your credentials file), and <i>--debug</i> (for detailed logging).


title: HISTORY
content:
Amazon SQS is one of the oldest and most fundamental AWS services, launched in 2004. The <b>AWS Command Line Interface (CLI)</b> itself was first released in 2013, providing a unified and consistent interface for interacting with all AWS services, including SQS. The integration of SQS functionalities into the AWS CLI has steadily evolved, reflecting new SQS features and improvements, providing developers and operations teams with robust command-line capabilities for automation, scripting, and direct management of message queues.


title: SYNOPSIS
content:
<b>aws sts</b> <i><subcommand></i> [<i>options</i>] [<i>arguments</i>]<br><br>Examples:<br><i>aws sts assume-role --role-arn arn:aws:iam::123456789012:role/MyRole --role-session-name MySession</i><br><i>aws sts get-caller-identity</i><br><i>aws sts get-session-token --duration-seconds 3600 --serial-number arn:aws:iam::123456789012:mfa/user --token-code 123456</i>


title: PARAMETERS
content:
<b><i><subcommand></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the STS operation to perform. Common subcommands include <b>assume-role</b>, <b>get-session-token</b>, <b>get-caller-identity</b>, and <b>decode-authorization-message</b>.<br><br><b>--role-arn <i><value></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Used with <b>assume-role</b>) The ARN of the role to assume, identifying the AWS role. Required for <b>assume-role</b>.<br><br><b>--role-session-name <i><value></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Used with <b>assume-role</b>) An identifier for the assumed role session. This name appears in CloudTrail logs. Required for <b>assume-role</b>.<br><br><b>--duration-seconds <i><integer></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Used with <b>assume-role</b>, <b>get-session-token</b>) The duration, in seconds, for which the temporary credentials are valid. Defaults to 1 hour (3600 seconds). Maximum is 12 hours (43200 seconds) for roles and up to 36 hours for session tokens, depending on permissions.<br><br><b>--serial-number <i><value></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Used with <b>get-session-token</b>, and <b>assume-role</b> if MFA is required) The serial number of the MFA device associated with the user or role.<br><br><b>--token-code <i><value></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Used with <b>get-session-token</b>, and <b>assume-role</b> if MFA is required) The value provided by the MFA device. This is the 6-digit code from your virtual or hardware MFA device.<br><br><b>--external-id <i><value></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(Used with <b>assume-role</b>) A unique identifier that might be required by the role's trust policy, typically when assuming roles cross-account to prevent confused deputy attacks.<br><br><b>--output <i><format></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format: <i>json</i> (default), <i>text</i>, or <i>table</i>. This is a global AWS CLI option.<br><br><b>--region <i><value></i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;The AWS region to send the request to, overriding the default configured region. This is a global AWS CLI option.<br><br>


title: DESCRIPTION
content:
The <b>aws sts</b> command, part of the AWS Command Line Interface (CLI), enables interaction with the AWS Security Token Service (STS). STS provides temporary, limited-privilege credentials for AWS IAM users or federated users. These credentials enhance security by allowing access to AWS resources without exposing long-term static access keys. Common use cases include assuming IAM roles for cross-account access, obtaining session tokens for programmatic access, or retrieving information about the current calling entity. The command is essential for scripting automated tasks, CI/CD pipelines, and applications that require secure, temporary access to AWS resources without embedding permanent credentials.


title: CAVEATS
content:
The <b>aws sts</b> command relies on a correctly installed and configured AWS CLI. Credentials obtained are temporary and expire after a specified duration; they must be refreshed. Users or roles must have appropriate IAM policies that grant permission to perform specific STS operations. MFA requirements can add complexity to scripting, often necessitating interactive input or secure token management. It's crucial to handle temporary credentials securely, avoiding their exposure in logs or insecure storage.


title: CREDENTIAL MANAGEMENT
content:
The output of <b>aws sts</b> commands (e.g., <b>assume-role</b>, <b>get-session-token</b>) typically provides <i>AccessKeyId</i>, <i>SecretAccessKey</i>, and <i>SessionToken</i>. These values can be exported as environment variables (<i>AWS_ACCESS_KEY_ID</i>, <i>AWS_SECRET_ACCESS_KEY</i>, <i>AWS_SESSION_TOKEN</i>) to allow subsequent AWS CLI commands or SDKs to use the temporary credentials. For example:<br><i>eval $(aws sts assume-role --role-arn arn:aws:iam::123456789012:role/MyRole --role-session-name MySession --query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]' --output text | awk '{print "export AWS_ACCESS_KEY_ID=" $1 "\nexport AWS_SECRET_ACCESS_KEY=" $2 "\nexport AWS_SESSION_TOKEN=" $3 "\nexport AWS_SESSION_EXPIRES=" strftime("%s",systime()+$4) }')</i>


title: MFA AND SCRIPTING
content:
When Multi-Factor Authentication (MFA) is required for a role assumption or session token, scripting can be challenging as the <i>--token-code</i> must be provided. For automation, users often integrate with secure credential stores or use tools like <i>aws-vault</i>, which can manage MFA prompts and securely store credentials.


title: HISTORY
content:
The AWS Security Token Service (STS) is a fundamental service for managing temporary security credentials, integral to AWS's security model. The AWS CLI, including its <b>sts</b> subcommand, was first released in 2013, providing a unified command-line interface to interact with AWS services. Since its inception, the <b>aws sts</b> command has evolved alongside the service, receiving updates and new features to support enhanced security practices and more flexible credential management scenarios.


title: SYNOPSIS
content:
<b>aws-vault</b> [<I>options</I>] <I>command</I> [<I>arguments</I>]<br><b>aws-vault exec</b> [<I>profile</I>] [<I>--</I>] <I>command</I> [<I>arguments</I>]<br><b>aws-vault add</b> <I>profile</I><br><b>aws-vault ls</b><br><b>aws-vault rotate</b> <I>profile</I>


title: PARAMETERS
content:
<b>exec <profile> [--] <command> [<arguments>]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Executes a specified command with temporary AWS credentials fetched for the given profile. This is the primary way to use <i>aws-vault</i>.<br><br><b>add <profile></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Interactively prompts for AWS access keys (Access Key ID and Secret Access Key) and securely stores them for the specified profile.<br><br><b>remove <profile></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes the stored credentials for the specified profile from the secure vault.<br><br><b>ls</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists all AWS profiles for which credentials are currently stored within the vault.<br><br><b>rotate <profile></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Rotates the access keys for a given profile, prompting for the new access key ID and secret access key. It ensures the old keys are removed after rotation.<br><br><b>clear</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Clears all cached session tokens, forcing new authentication (e.g., MFA prompt) on the next use of credentials for any profile.<br><br><b>--profile=<profile></b><br>&nbsp;&nbsp;&nbsp;&nbsp;A global option to explicitly specify the AWS profile to operate on for commands that support it.<br><br><b>--duration=<duration></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(For <i>exec</i>) Sets the duration for the temporary credentials before they expire (e.g., '1h' for one hour, '30m' for thirty minutes).<br><br><b>--session-ttl=<duration></b><br>&nbsp;&nbsp;&nbsp;&nbsp;(For <i>exec</i>) Sets the Time-To-Live (TTL) for the assumed role session within the vault's cache. This is typically longer than the credential duration.<br><br><b>--no-session</b><br>&nbsp;&nbsp;&nbsp;&nbsp;(For <i>exec</i>) Disables caching of session tokens, forcing <i>aws-vault</i> to prompt for MFA or re-authenticate every time credentials are requested.<br><br>


title: DESCRIPTION
content:
<i>aws-vault</i> is a command-line tool designed to securely store and manage AWS credentials on your local machine. Unlike storing credentials in plain text files (e.g., ~/.aws/credentials) or directly in environment variables, <i>aws-vault</i> encrypts them within your operating system's native keystore (such as macOS Keychain, Linux Secret Service/pass, or Windows Credential Manager). It provides temporary credentials on demand, prompting for MFA tokens when required, and automatically handles refreshing expired tokens. This approach significantly enhances security by minimizing the exposure of long-lived access keys and streamlining the use of IAM roles and multi-factor authentication for AWS CLI operations.


title: CAVEATS
content:
<i>aws-vault</i> relies on the operating system's native keyring/credential manager for secure storage. On Linux, this may require a working desktop environment's keyring service (like GNOME Keyring or KWallet) or a CLI-based alternative like 'pass'.<br>While enhancing security, it introduces an additional dependency and step for credential management, which might require adjustments for automated scripts or CI/CD pipelines (though the <i>export</i> command can mitigate this).


title: INTEGRATION WITH ~/.AWS/CONFIG
content:
<i>aws-vault</i> manages the AWS access key ID and secret access key securely. However, it still relies on your <i>~/.aws/config</i> file for other profile-specific configurations, such as the default region, output format, <i>role_arn</i> for IAM role assumption, and <i>mfa_serial</i> for multi-factor authentication device details.


title: EXPORTING CREDENTIALS FOR SCRIPTING
content:
For scenarios requiring credentials outside of a direct command execution (e.g., within a shell script that needs to set environment variables), <i>aws-vault</i> offers the <b>export</b> command. For example, <b>eval $(aws-vault export --format=json <I>profile</I> | jq -r 'to_entries|map("export AWS_" + .key + "=\"" + .value + "\"")|.[]')</b> can be used to set the temporary credentials as environment variables in the current shell session. Note that `jq` is often needed for parsing the JSON output effectively.


title: HISTORY
content:
<i>aws-vault</i> was developed and open-sourced by 99designs (now part of Canva) to address the need for a more secure and convenient way to manage AWS credentials, especially in environments where users frequently switch IAM roles or require Multi-Factor Authentication (MFA). It quickly gained traction in the AWS community as a robust solution to a common security challenge, providing a secure alternative to storing plaintext credentials or relying on environment variables alone.


title: SYNOPSIS
content:
<b>aws workmail</b> <i>&lt;subcommand&gt;</i> [<i>options</i>] [<i>parameters</i>]<br><br><b>Examples of common subcommands:</b><br>&nbsp;&nbsp;<b>aws workmail</b> <i>list-organizations</i><br>&nbsp;&nbsp;<b>aws workmail</b> <i>create-user</i> <b>--organization-id</b> <i>&lt;id&gt;</i> <b>--name</b> <i>&lt;name&gt;</i> <b>--display-name</b> <i>&lt;display-name&gt;</i> <b>--password</b> <i>&lt;password&gt;</i><br>&nbsp;&nbsp;<b>aws workmail</b> <i>describe-users</i> <b>--organization-id</b> <i>&lt;id&gt;</i>


title: PARAMETERS
content:
<b>--output <i>&lt;format&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the output format. Common formats include <b>json</b>, <b>text</b>, and <b>table</b>.<br><br><b>--region <i>&lt;region&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the AWS region to send the request to (e.g., <b>us-east-1</b>).<br><br><b>--profile <i>&lt;profile-name&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uses a specific profile from your credential file.<br><br><b>--endpoint-url <i>&lt;url&gt;</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Overrides the default endpoint URL for the service.<br><br><b>--no-cli-pager</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Disables the CLI pager for commands that typically use one.<br><br><b>[subcommand-specific parameters]</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Each <i>workmail</i> subcommand has its own unique set of parameters and arguments required to perform its specific operation (e.g., <b>--organization-id</b>, <b>--user-id</b>, <b>--name</b>, <b>--password</b>).<br><br>


title: DESCRIPTION
content:
<i><B>aws-workmail</B></i> is not a standalone Linux command. Instead, it refers to the interaction with Amazon WorkMail, a managed and secure business email and calendaring service, through the <b>AWS Command Line Interface (CLI)</b>. The `aws workmail` command is used to programmatically manage various aspects of your WorkMail organizations, users, groups, and resources directly from your terminal. This allows for automation of tasks such as creating users, managing mailboxes, configuring organizations, and integrating with other AWS services. It is an essential tool for administrators who need to manage their WorkMail environment without using the AWS Management Console, enabling scripting and integration into CI/CD pipelines or operational workflows. The `aws workmail` command namespace encompasses a wide array of subcommands, each dedicated to a specific WorkMail API operation, providing comprehensive control over the service.


title: CAVEATS
content:
<ul><li>Requires the <b>AWS CLI</b> to be installed and configured with appropriate IAM credentials.</li><li>Internet connectivity is essential to interact with the AWS WorkMail service.</li><li>Users must have the necessary AWS Identity and Access Management (IAM) permissions to perform WorkMail operations.</li><li>Costs may be incurred based on your AWS WorkMail usage and AWS pricing policies.</li><li>The syntax and available subcommands are dependent on the AWS CLI version and the AWS WorkMail API version.</li></ul>


title: UNDERSTANDING 'AWS-WORKMAIL'
content:
It is crucial to understand that 'aws-workmail' is not a direct executable or a standalone command. Instead, it refers to the <i>'workmail'</i> service module within the broader <b>AWS CLI</b> framework. All interactions begin with the `aws` command, followed by the service name (`workmail`), and then the specific operation (subcommand) you wish to perform.


title: COMMON USE CASES
content:
The `aws workmail` command is frequently used for:<br><ul><li>Automated provisioning and de-provisioning of users and groups.</li><li>Managing email domains and aliases.</li><li>Migrating mailboxes.</li><li>Monitoring organization status and resource utilization.</li><li>Scripting routine administrative tasks for scalability and efficiency.</li></ul>


title: HISTORY
content:
Amazon WorkMail was launched by AWS in 2015, providing a secure, managed email and calendaring service for businesses. Concurrently, the <b>AWS CLI</b> has evolved significantly since its initial release, becoming the primary command-line tool for interacting with virtually all AWS services, including WorkMail. The `aws workmail` commands directly reflect the WorkMail API, allowing developers and administrators to manage WorkMail resources programmatically as the service matured and added new features.


title: PARAMETERS
content:
<b>-n <I>num</I>, --connections=<I>num</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify the maximum number of connections to use (default is 4).<br><br><b>-o <I>file</I>, --output=<I>file</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Save the downloaded file as <I>file</I> instead of its original filename from the URL.<br><br><b>-s <I>num</I>, --bytes=<I>num</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the maximum download speed in bytes per second. Suffixes like 'K', 'M', 'G' are supported.<br><br><b>-S <I>num</I>, --maxspeed=<I>num</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Alias for --bytes. Specify the maximum download speed in bytes per second.<br><br><b>-H <I>header</I>, --header=<I>header</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Add an extra HTTP header to the request (e.g., 'Cookie: foo=bar').<br><br><b>-U <I>agent</I>, --user-agent=<I>agent</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specify a custom User-Agent string for HTTP requests.<br><br><b>-p, --no-proxy</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not use any configured HTTP/FTP proxy.<br><br><b>-x <I>proxy</I>, --proxy=<I>proxy</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use a specific proxy server for the download (e.g., 'http://proxy.example.com:8080').<br><br><b>-q, --quiet</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppress all status and progress messages during download.<br><br><b>-v, --verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Print more detailed status messages and debug information.<br><br><b>-k, --insecure</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not verify the peer certificate for HTTPS downloads. Use with caution.<br><br><b>-e, --no-clobber</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not overwrite an existing file. If the target file exists, <i>axel</i> will exit.<br><br><b>-a, --no-auto-resume</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not automatically attempt to resume a download if the file already exists.<br><br><b>-b, --no-speed-meter</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not display the real-time speed meter (progress bar) during download.<br><br><b>-T <I>timeout</I>, --timeout=<I>timeout</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the connection timeout in seconds.<br><br><b>-w <I>num</I>, --wait=<I>num</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Wait <I>num</I> seconds between retries for failed connections.<br><br><b>-r <I>num</I>, --retries=<I>num</I></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Set the number of retries for failed connections (default is 5).<br><br><b>-c, --continue</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Explicitly resume a broken download. This is often the default behavior if a partial file already exists.<br><br><b>-4, --ipv4</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use IPv4 only for connections.<br><br><b>-6, --ipv6</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Use IPv6 only for connections.<br><br><b>-j, --json</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output progress information in JSON format, suitable for scripting and parsing.<br><br><b>-h, --help</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display help information and exit.<br><br><b>-V, --version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Display version information and exit.<br><br>


title: DESCRIPTION
content:
<i>axel</i> is a lightweight Linux command-line download accelerator designed to speed up downloads by using multiple connections for a single file. It supports a variety of protocols including HTTP, HTTPS, FTP, and FTPS. A key feature of <i>axel</i> is its ability to automatically resume interrupted downloads, making it resilient to network outages or system restarts. Unlike traditional download tools like <i>wget</i> or <i>curl</i> which download sequentially, <i>axel</i> splits the file into multiple segments and downloads these parts concurrently. This parallel approach significantly reduces download times, especially beneficial on high-latency or high-bandwidth connections. It is often chosen for its efficiency, minimal resource consumption, and user-friendly command-line interface.


title: CAVEATS
content:
Not all web servers fully support multiple connections via HTTP range requests. In such scenarios, <i>axel</i> will gracefully fall back to a single connection. While <i>axel</i> excels at accelerating downloads, it is more specialized than general-purpose network tools like <i>curl</i> or <i>wget</i> and may not offer their extensive features for general web interaction or complex protocol handling. Using an excessively high number of connections (via <i>-n</i>) might be perceived as aggressive by some servers and could potentially lead to temporary IP blocking.


title: RESUME CAPABILITY
content:
<i>axel</i> intelligently detects existing partial files at the target destination and automatically attempts to resume the download from the point of interruption. This ensures robustness against network issues or system reboots. This auto-resume behavior can be explicitly disabled using the <i>--no-auto-resume</i> option if desired.


title: MULTIPLE URL HANDLING
content:
Users can provide multiple URLs as arguments on the command line. <i>axel</i> will then process and download each URL sequentially, applying its acceleration techniques to each download in turn.


title: JSON PROGRESS OUTPUT
content:
A modern feature, the <i>-j</i> or <i>--json</i> option allows <i>axel</i> to output its real-time progress updates in a structured JSON format. This makes it significantly easier to integrate <i>axel</i>'s download status into scripts, graphical user interfaces, or other applications for programmatic monitoring and control.


title: HISTORY
content:
<i>axel</i> was initially developed by Wilmer van der Gaast and first released around the year 2000. As an open-source project, it has been continuously maintained and evolved by a community of developers. Over its history, <i>axel</i> has integrated support for newer protocols and features like HTTPS and IPv6, while consistently adhering to its core principle of providing fast, multi-connection downloads from the command line. Its simplicity and effectiveness have cemented its place as a popular utility for accelerated downloading in Linux environments.


title: SYNOPSIS
content:
<pre><code><b>axi-cache</b> &lt;subcommand&gt; [<i>options</i>] [<i>arguments</i>]</code></pre><br>Common subcommands include:<br><pre><code><b>axi-cache</b> <i>status</i><br><b>axi-cache</b> <i>clean</i> [<i>options</i>]<br><b>axi-cache</b> <i>fetch</i> &lt;item&gt;... [<i>options</i>]<br><b>axi-cache</b> <i>store</i> &lt;item&gt;... [<i>options</i>]<br><b>axi-cache</b> <i>purge</i> [<i>options</i>]<br><b>axi-cache</b> <i>pull</i> [<i>options</i>]<br><b>axi-cache</b> <i>push</i> [<i>options</i>]<br><b>axi-cache</b> <i>show</i> [<i>options</i>]</code></pre>


title: PARAMETERS
content:
<b><i>status</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays the current state and statistics of the local cache.<br><br><b><i>clean</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Removes old or specified entries from the local cache.<br><br><b><i>fetch</i> &lt;item&gt;...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Retrieves specified items (e.g., source packages or compiled libraries) into the local cache.<br><br><b><i>store</i> &lt;item&gt;...</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Adds specified items to the local cache, typically after they have been processed or compiled.<br><br><b><i>purge</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Completely empties the local cache.<br><br><b><i>pull</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Synchronizes the local cache with a remote cache, pulling new or updated items.<br><br><b><i>push</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Uploads local cache entries to a remote cache for sharing or backup.<br><br><b><i>show</i></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Lists contents of the cache.<br><br><b><b>-v</b>, <b>--verbose</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Enables verbose output, displaying detailed information about the cache operations.<br><br><b><b>-f</b>, <b>--force</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Forces an operation, potentially overwriting existing data or bypassing confirmation prompts.<br><br><b><b>-h</b>, <b>--help</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Displays a help message for the main command or a specific subcommand.<br><br><b><b>--cache-dir</b> &lt;path&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies an alternative directory to use for the cache instead of the default location.<br><br><b><b>--remote</b> &lt;url&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Specifies the URL of a remote cache for synchronization (pull/push) operations.<br><br><b><b>--branch</b> &lt;name&gt;</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Used with remote cache operations to specify a particular branch of cached items.<br><br><b><b>--all</b></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Applies the <i>clean</i> or <i>purge</i> operation to all relevant cache entries.<br><br>


title: DESCRIPTION
content:
<i><b>axi-cache</b></i> is a command-line utility integral to the Axiom-V build system, a modern re-implementation of the Axiom computer algebra system. Its primary function is to manage a local cache of source files and compiled artifacts (like <i>.spad</i> files and their compiled <i>.NRLIB</i> or <i>.NRLIB.axml</i> equivalents). By caching these components, <i><b>axi-cache</b></i> significantly accelerates repeated builds, reduces network traffic for fetching dependencies, and contributes to build reproducibility. It works in conjunction with other Axiom-V tools like <i><b>axi-fetch</b></i> (for retrieving dependencies) and <i><b>axi-compile</b></i> (for compiling sources). The cache helps maintain consistency across different development environments and ensures that builds leverage previously processed components efficiently.


title: CAVEATS
content:
<ul><li><i><b>axi-cache</b></i> is not a standard Linux distribution command. It is specific to the Axiom-V project and requires the Axiom-V development environment to be set up.</li><li>Its functionality and available options are determined by the specific version of Axiom-V being used.</li><li>Comprehensive documentation beyond the Axiom-V project's own resources may be limited.</li></ul>


title: ROLE IN AXIOM-V WORKFLOW
content:
In a typical Axiom-V development cycle, <i><b>axi-cache</b></i> plays a crucial role alongside <i><b>axi-fetch</b></i> and <i><b>axi-compile</b></i>. Developers first use <i><b>axi-fetch</b></i> to retrieve necessary source packages, which may utilize the cache. During compilation with <i><b>axi-compile</b></i>, <i><b>axi-cache</b></i> stores the resulting compiled libraries (<i>.NRLIB</i>) and intermediate artifacts. Subsequent builds then consult the cache, avoiding redundant compilation steps and significantly reducing build times.


title: COMPARISON WITH CCACHE
content:
While <i><b>axi-cache</b></i> shares a conceptual similarity with <i><b>ccache</b></i> (a compiler cache for C/C++/Objective-C), their implementations and scope differ. <i><b>ccache</b></i> primarily caches the output of C/C++ compilers based on source file hashes, while <i><b>axi-cache</b></i> is tailored specifically for the Axiom-V build system, caching Axiom-specific source files, compiled Lisp code, and <i>NRLIB</i> artifacts. <i><b>axi-cache</b></i> also often supports remote cache synchronization, a feature less common in standard <i><b>ccache</b></i> setups.


title: HISTORY
content:
<i><b>axi-cache</b></i> emerged as part of the Axiom-V project, which began as a collaborative effort to modernize and continue the development of the Axiom computer algebra system. Recognizing the need for efficient and reproducible builds, especially given Axiom's complex dependency graph and compilation process (often involving Lisp and its own internal compiler), <i><b>axi-cache</b></i> was developed to manage a persistent cache of source files and compiled objects. Its inclusion streamlined the development workflow, enabling faster iterations for developers and facilitating continuous integration by leveraging previously built components. It represents a key infrastructure component in ensuring the ongoing usability and maintainability of the Axiom-V system.


title: SYNOPSIS
content:
az <I>command</I> <I>subcommand</I> [options]<br><br>Examples:<br>`az login`<br>`az group create --name <I>myResourceGroup</I> --location <I>eastus</I>`<br>`az vm list --output <I>table</I>`<br>`az webapp up --name <I>myWebApp</I> --resource-group <I>myResourceGroup</I>`


title: PARAMETERS
content:
<b>--help, -h</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows help message for a command or subcommand.<br><br><b>--output, -o <format></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Output format: 'json', 'jsonc' (colorized JSON), 'tsv' (tab-separated values), 'table', 'yaml', 'yamlc', or 'none'. Default is 'json'.<br><br><b>--query <JMESPath-query></b><br>&nbsp;&nbsp;&nbsp;&nbsp;JMESPath query string for filtering the output of Azure CLI commands.<br><br><b>--verbose</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases logging verbosity to show verbose logs.<br><br><b>--debug</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Increases logging verbosity to show all debug logs.<br><br><b>--version</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Shows the version of the Azure CLI.<br><br><b>--only-show-errors</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Suppresses warnings and only shows errors.<br><br><b>--subscription <id-or-name></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Name or ID of the subscription to use for the command.<br><br><b>--tenant <id></b><br>&nbsp;&nbsp;&nbsp;&nbsp;Tenant ID to use for login or operations (often used in multi-tenant scenarios).<br><br><b>--no-browser</b><br>&nbsp;&nbsp;&nbsp;&nbsp;Do not launch a web browser for interactive login. Forces device code authentication flow.<br><br>


title: DESCRIPTION
content:
The `az` command is the <I>Azure Command-Line Interface</I> (Azure CLI), a powerful and cross-platform tool developed by Microsoft for managing Azure resources and services directly from your terminal. It provides a rich set of commands to interact with almost every aspect of Azure, from creating and configuring virtual machines, storage accounts, and networking components to managing databases, web apps, and serverless functions.<br><br>Designed for efficiency, `az` allows for both interactive usage and seamless integration into automation scripts and and DevOps pipelines. Its consistent command structure and intuitive syntax make it accessible to developers and administrators alike. Built on Python, the Azure CLI is extensible through various extensions, enabling it to support new or specialized Azure services as they emerge, offering a flexible and comprehensive management solution for the Azure cloud.


title: CAVEATS
content:
Managing resources with `az` requires an active <I>Azure subscription</I> and successful authentication via `az login`. Commands are executed against your cloud resources, meaning actions like deletion are permanent. Users should exercise caution, especially in production environments. Internet connectivity is mandatory for all operations. The hierarchical nature of commands can initially present a learning curve, but the built-in help (`az <command> --help`) is extensive and highly useful for navigation.


title: AUTHENTICATION
content:
Before using `az` to manage resources, you must authenticate to Azure. This is typically done using `az login`. This command opens a web browser for interactive sign-in or provides a device code for browser-less environments. Once authenticated, `az` maintains your session.


title: EXTENSIONS
content:
The Azure CLI supports extensions, which are components that add new commands or functionality. Extensions allow the CLI to support preview services or provide specialized features without requiring a full CLI update. They can be installed and managed using `az extension` commands (e.g., `az extension add --name <I>azure-devops</I>`).


